2013-03-08 3 views
1

나는 avi 비디오에서 프레임을 얻었고 Matlab에 의해 컬러 이미지를 열고 R, G, B 세 가지 채널의 픽셀 값을 확인했습니다. (케이스 1)Matlab과 Opencv 사이의 이미지에서 픽셀 값의 차이

그 후, 나는 opencv2.4.3을 사용하여 프레임을 얻고 픽셀 값을 txt 파일로 저장합니다. 그런 다음 txt 파일을 확인하면 픽셀 값이 Matlab과 다르다는 것을 알 수 있습니다. opencv에서 열어 본 색상 이미지는 BGR이며 픽셀의 인덱스 위치는 반드시 1이어야합니다 (Matlab에서는 픽셀 위치 (x, y)). , 화소 위치 (x-1, y-1))). (케이스 2)

마지막으로 opencv를 사용하여 cvSaveImage 함수로 프레임을 저장 한 다음이 프레임을 Matlab에서 엽니 다. 이 경우 픽셀 값도 위의 두 가지 경우와 다릅니다.

왜 이런 일이 발생합니까?

감사합니다. 내 영어에 대해 미안해!

이 내 코드 http://www.scribd.com/doc/129263549/Code MATLAB과 OpenCV의 픽셀 값을 저장하는 다른 방법이

+2

기본적으로 손실이 많은 jpeg 형식을 시도한 것 같습니다. 무손실 형식을 시도하십시오. 그것은 동일해야합니다. –

+0

세 번째 사례는 중요하지 않습니다. 하지만 첫 번째와 두 번째 경우에는 avi 이미지에서 프레임을 가져 와서 데이터를 직접 처리합니다. opencv에서 프레임 체크 값을 얻기 위해 cvCaptureFromAVI와 cvQueryFrame을 사용합니다. Matlab에서는 VideoReader를 사용하여 프레임을 가져온 다음 값을 확인하기 위해 imshow를 읽습니다. 두 값이 다릅니다! –

+0

등록이 필요한 일부 다운로드 사이트에 링크하는 대신 코드의 관련 부분을 질문에 포함하십시오. – Junuxx

답변

1

(읽으을 다운로드해야합니다)입니다. Matlab은 압축을 사용하여 .jpeg 이미지를 저장하기 전에 저장합니다. 따라서 Matlab과 OpenCV에서 유사한 이미지의 픽셀 데이터를 보면 모양이 달라집니다.

동일한 원본 이미지를 Matlab과 OpenCV 모두에서로드하고 저장하면 전자는보다 나중에 작은 이됩니다. 비록 당신이 이미지에 어떤 조작도하지 않더라도.

두 이미지 데이터를 동일하게 볼 수있는 방법은 없습니다. 다행히 이미지에서 수행 된 모든 작업은 내부 구조의 차이에 영향을받지 않습니다. 예를 들어, Matlab과 OpenCV에서 특정 픽셀의 인덱스를 찾으려고하면 값이 같아 보이지 않지만 둘 다 올바른 값을 제공합니다.

관련 문제