2014-07-22 2 views
2

3 채널 이미지의 각 행의 크기를 바이트 단위로 계산하는 방법은 무엇입니까? 나는 그것이 아님을 안다. 컬럼 수 * 요소 크기. 그러나 일부 책과 인터넷에서 때때로 행에 효율성을 위해 여분의 픽셀이 채워지는 것을 보았습니다. 따라서이 경우 바이트 수가 증가하기 때문에 위의 수식이 작동하지 않습니다. 내가 맞습니까? 설명 해주십시오. 또한 바이트의 첫 번째 행 크기를 찾기 위해 "단계"특성을 찾을 수있었습니다.이미지의 각 행의 바이트 수를 계산합니다.

나는 그것을 img.step [0]으로 사용했습니다. // It Gave no. 첫 번째 행의 바이트 수

그러나 img.step [1]을 사용하여 두 번째 행의 크기를 찾으려고하면 가비지 값이 생깁니다. 무슨 일이 일어나는지 설명하십시오.

답변

1

일반적으로 이미지의 모든 행에 단계가 적용됩니다. 모든 행의 크기는 첫 번째 행의 크기와 같습니다.

+0

어떻게 적용됩니까 ?? 예를 들어주십시오. – Navdeep

+0

동일한 패딩이 이미지의 모든 행에 적용된다고 말합니다. 따라서 치수가 62 x 50 인 이미지로 작업하는 경우 각 행 끝에 2 바이트가 추가되어 패딩 된 이미지가 64 x 50이됩니다. – Mike

+0

예 행은 4 또는 8의 배수 여야하지만 우리가 직접적으로 아니오를 결정할 수있는 도움이되는 속성이 있는지 알고 싶습니다. C에서 행의 바이트의 + +? – Navdeep

1

은 당신이 찾고있는 무슨 분야 바이트 정렬 이미지 행의 IplImage.widthStep

크기

편집이다 당신은 OpenCv 2를 사용했다. 당신이 cv :: Mat를 사용하고 있다고 가정합니다.

이 경우 cv :: Mat.step은 행 너비를 제공해야합니다.

바이트 단위의 연속 행간 거리. 어떤 경우라도 그 갭을 포함한다.

그러나 각 행에 대해 cv::Mat::ptr(row) 메서드를 사용하는 것이 좋습니다. 그러면 원시 행 데이터에 uchar*이 리턴됩니다.

+0

저는 OpenCv2에서 C++ 인터페이스로 작업하고 있습니다. C++ 속성을 알려주십시오. 감사. – Navdeep

관련 문제