OpenCV : 16 비트 깊이의 단일 채널 png 이미지를 올바르게 읽을 수 없습니다.

사용자 2799508

단일 채널과 16 비트 깊이의 png 이미지를 읽으려고합니다. 그 후 라인에서 픽셀 값을 찾습니다.

//read the image data in the file "MyPic.JPG" and store it in 'img'
Mat img = imread("sir.png",  CV_LOAD_IMAGE_ANYDEPTH); 

//Iterate through the line along which Intensity profile is required 
LineIterator it(img, Point(1,1), Point(20,20), 8);

vector<Vec3b> buf;   

for(int i=0; i<it.count; i++)
{
    buf.push_back( Vec3b(*it) );
    it++;
}
//print pixel value on the selected line
cerr << Mat(buf) << endl;

인쇄 된 값은 항상 255보다 작은 no입니다.

156, 156, 164; 153, 153, 152; 154, 154, 139; 179, 179, 180; 182, 182, 176; 2
208, 167; 144, 144, 163; 204, 204, 206; 180, 180, 187; 174, 174, 170; 150, 1
162; 154, 154, 170; 157, 157, 181; 181, 181, 159; 164, 164, 152; 130, 130, 1
166, 166, 181; 153, 153, 170; 153, 153, 176; 180, 180, 198]

이것은 실제로이 이미지를 16 비트 대신 8 비트로 읽는다는 것을 의미합니다.

MATLAB에서 내 이미지를 확인했으며 다음과 같이 16 비트에 유효한 값을 볼 수 있습니다.

d=imread('sir.png');
buf = improfile( d, [1 20], [1 20] )

다음과 같은 출력을 제공합니다.

65535 40092 39321 39578 46003 46774 53456 37008 52428 46260 44718 38550 39578 40349 46517 42148 33410 42662 39321 39321

opencv의 결과가 실제와 다른 이유는 무엇입니까? 16 비트 값을 표시하도록 이미지를 올바르게 읽으려면 어떻게해야합니까?

최신 정보

Roger의 답변에 따라 다음과 같이 코드를 업데이트했습니다.

LineIterator it(img, Point(1,1), Point(20,20), 8);
vector<ushort> buf;

for(int i = 0; i < it.count; i++)
{
    buf.push_back(img.at<ushort>(it.pos()));
}

cerr << Mat(buf) << endl;

하지만 이제 모든 픽셀 값이 40092로 나오고 있는데 이는 MATLAB 출력에 비해 잘못되었습니다.

로저 롤랜드

Vec3b픽셀을 처리 하기 위해를 사용하고 있습니다 . 이것은 int 8 비트 청크를 잘라냅니다.

사용 Vec3s대신에 Vec3b. 16 비트 픽셀을 얻을 수 있습니다. 이것은 16 비트 그레이 스케일의 한 채널 (내 생각에 PNG에서 얻을 수있는 것임)이 아니라 16 비트의 3 채널이 있다고 가정합니다.이 경우 at<ushort>(y,x)예를 들어 액세스 합니다.

LineIterator it(img, Point(1,1), Point(20,20), 8);

vector<ushort> buf;

for(int i = 0; i < it.count; i++, it++)
{
    buf.push_back(img.at<ushort>(it.pos()));
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

16 비트 단일 채널 이미지를 Tiff에 쓰기

분류에서Dev

OpenCV는 이미지를 3 채널 이미지로 읽는 반면 PIL은 1 채널 이미지와 동일한 이미지를 읽습니다.

분류에서Dev

색상의 원을 감지하면 OpenCV에서 "이미지는 HoughCircle에서 8 비트 단일 채널이어야 함"오류가 발생합니다.

분류에서Dev

읽기 / 쓰기 스트림을 사용하여 이진 파일을 올바르게 구문 분석하고 다시 어셈블 할 수 없습니다.

분류에서Dev

파일에서 정수를 올바르게 읽을 수 없습니다. C ++

분류에서Dev

opencv에서 이미지를 읽을 수 없습니다.

분류에서Dev

C #에서 잘못된 BOM이있는 텍스트 파일을 올바르게 읽을 수 있습니까?

분류에서Dev

'cmp'를 사용하여 두 텍스트 파일을 올바르게 비교할 수 없습니다.

분류에서Dev

matplotlib는 단일 채널 또는 회색조 이미지 픽셀을 그릴 수 없습니다.

분류에서Dev

OpenCV : 함수에 데이터를 올바르게 전달할 수 없습니다.

분류에서Dev

이미지 이름을 올바르게 검색 할 수 없습니다.

분류에서Dev

자바 : Tiff 이미지 파일을 읽을 수 없습니다.

분류에서Dev

FILE *은 이전 항목을 올바르게 읽은 후 입력 텍스트 파일에서 'double'변수로 0을 읽습니다.

분류에서Dev

C ++ 유니 코드 문자가 1 바이트보다 클 수있는 파일을 올바르게 읽습니다.

분류에서Dev

자바 스크립트에서 이미지를 올바르게로드 할 수 없습니다.

분류에서Dev

데이터를 올바르게 읽을 수 없습니다. C #을 사용하여 직렬 포트에서 수신합니다.

분류에서Dev

opencv에서 이미지를 읽을 수 없습니까?

분류에서Dev

데이터 프레임 요소의 값 유형을 올바르게 읽을 수 없습니다.

분류에서Dev

opencv python에서 이미지를 컬러로 읽을 수 없습니다.

분류에서Dev

파일을 올바르게 구문 분석 할 수 없습니다. Glob이 작동하지 않음

분류에서Dev

GWT 프로젝트는 개발 모드에서 속성 파일을 올바르게 읽지 만 배포 할 때 찾을 수 없습니다.

분류에서Dev

Boost :: GIL : 알파 채널이있는 * .png 이미지 읽기에 앤티 앨리어싱이 없습니다.

분류에서Dev

mocha로 단위 테스트를 올바르게 구성 할 수 없습니다.

분류에서Dev

Delphi에서 GraphicEx를 통해 PNG를 올바르게 그리는 방법을 얻을 수 없습니다.

분류에서Dev

powershell이 저장된 이메일을 올바르게 포함하도록 강제 할 수 없습니다.

분류에서Dev

MATLAB : 3 채널 24 비트 bmp 이미지를 1 채널 16 비트 bmp 이미지로 변환

분류에서Dev

PyGame에서 KEYDOWN 이벤트를 올바르게 추적 할 수 없습니다.

분류에서Dev

자바 NIO는 JRT 이미지에서 파일을 읽을 수 없습니다

분류에서Dev

내 가상 머신 (또는 호스트 시스템)이 RAM을 올바르게 사용할 수 없습니다.

Related 관련 기사

  1. 1

    16 비트 단일 채널 이미지를 Tiff에 쓰기

  2. 2

    OpenCV는 이미지를 3 채널 이미지로 읽는 반면 PIL은 1 채널 이미지와 동일한 이미지를 읽습니다.

  3. 3

    색상의 원을 감지하면 OpenCV에서 "이미지는 HoughCircle에서 8 비트 단일 채널이어야 함"오류가 발생합니다.

  4. 4

    읽기 / 쓰기 스트림을 사용하여 이진 파일을 올바르게 구문 분석하고 다시 어셈블 할 수 없습니다.

  5. 5

    파일에서 정수를 올바르게 읽을 수 없습니다. C ++

  6. 6

    opencv에서 이미지를 읽을 수 없습니다.

  7. 7

    C #에서 잘못된 BOM이있는 텍스트 파일을 올바르게 읽을 수 있습니까?

  8. 8

    'cmp'를 사용하여 두 텍스트 파일을 올바르게 비교할 수 없습니다.

  9. 9

    matplotlib는 단일 채널 또는 회색조 이미지 픽셀을 그릴 수 없습니다.

  10. 10

    OpenCV : 함수에 데이터를 올바르게 전달할 수 없습니다.

  11. 11

    이미지 이름을 올바르게 검색 할 수 없습니다.

  12. 12

    자바 : Tiff 이미지 파일을 읽을 수 없습니다.

  13. 13

    FILE *은 이전 항목을 올바르게 읽은 후 입력 텍스트 파일에서 'double'변수로 0을 읽습니다.

  14. 14

    C ++ 유니 코드 문자가 1 바이트보다 클 수있는 파일을 올바르게 읽습니다.

  15. 15

    자바 스크립트에서 이미지를 올바르게로드 할 수 없습니다.

  16. 16

    데이터를 올바르게 읽을 수 없습니다. C #을 사용하여 직렬 포트에서 수신합니다.

  17. 17

    opencv에서 이미지를 읽을 수 없습니까?

  18. 18

    데이터 프레임 요소의 값 유형을 올바르게 읽을 수 없습니다.

  19. 19

    opencv python에서 이미지를 컬러로 읽을 수 없습니다.

  20. 20

    파일을 올바르게 구문 분석 할 수 없습니다. Glob이 작동하지 않음

  21. 21

    GWT 프로젝트는 개발 모드에서 속성 파일을 올바르게 읽지 만 배포 할 때 찾을 수 없습니다.

  22. 22

    Boost :: GIL : 알파 채널이있는 * .png 이미지 읽기에 앤티 앨리어싱이 없습니다.

  23. 23

    mocha로 단위 테스트를 올바르게 구성 할 수 없습니다.

  24. 24

    Delphi에서 GraphicEx를 통해 PNG를 올바르게 그리는 방법을 얻을 수 없습니다.

  25. 25

    powershell이 저장된 이메일을 올바르게 포함하도록 강제 할 수 없습니다.

  26. 26

    MATLAB : 3 채널 24 비트 bmp 이미지를 1 채널 16 비트 bmp 이미지로 변환

  27. 27

    PyGame에서 KEYDOWN 이벤트를 올바르게 추적 할 수 없습니다.

  28. 28

    자바 NIO는 JRT 이미지에서 파일을 읽을 수 없습니다

  29. 29

    내 가상 머신 (또는 호스트 시스템)이 RAM을 올바르게 사용할 수 없습니다.

뜨겁다태그

보관