2013-03-15 5 views
2

CentOS 컴퓨터에서 OpenCV 2.4.4를 사용하고 있습니다. 내 코드는 현재 경고 이미지로드 :openCV 경고 구성 요소 데이터 형식이 일치하지 않습니다.

#include <cv.h> 
#include <highgui.h> 
#include "imglib.h" 

int main(int argc, char** argv) 
{ 
    Mat image = imread(argv[1], CV_LOAD_IMAGE_ANYDEPTH); 
    imwrite("debugwriteout.jp2", image); 
} 

내가 인수에 .jp2 그레이 스케일 파일의 이름을 전달 : 구성 요소 데이터 형식이 일치 여기

를 코드입니다. 이미지의 픽셀 깊이는 14 비트이지만, 픽셀 값을 인쇄하면 20000 이상의 값을 얻습니다. 이제 이미지는 완전히 검은 색 사각형이됩니다. 어떤 조언을 주시면 감사하겠습니다.

추가 정보 : 나는 그것을 성공적으로 8 비트 픽셀 깊이와 인쇄 유용한 출력으로 이미지를 변환 CV_LOAD_IMAGE_GRAYSCALE하는 imread 플래그를 변경하면 그래서 나는 재스퍼 모듈은 적어도 어느 정도 제대로 작동하는지 알 수 있습니다.

어떤 조언을 주시면 감사하겠습니다,

감사

답변

1

SZman를 사용하여 이미지를 읽어 보시기 바랍니다. 해결책은 상위 비트의 위치입니다. 16 비트에서 14 비트 깊이의 경우 00xxxxxxxxxxxxxx 대신 xxxxxxxxxxxxxx00을 사용합니다. 올바른 값을 원하면 오른쪽에 2 비트의 데칼을 넣어야합니다.

0

그 플래그 내 문제를 해결

Mat image = imread(argv[1], CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); 
+0

플래그를 추가했는데 아무 것도 변경되지 않았습니다. – SZman

+0

입력 이미지를 16 비트로 포맷하고 다시 시도하십시오. – William