2013-05-26 5 views
0

제목에서 설명한대로 문제가 있습니다. MAT에 2D로 채워진 int ** (Dynamic) 배열을 할당하고 화면에 표시하고 싶습니다. 나는 많은 질문을 설명했다. 구글과 아무것도 얻지 못했다. 어떤 도움이라도 대단히 감사하겠습니다. 여기 내 코드가 작동하지 않습니다.OpenCV, Dynamic int 표시 2D 배열 이미지로 (매트 객체로)

int** resultMatrix; 
#define SIZE 800 
//Some array process (Assign,Erosion etc..) 
Mat A = Mat(SIZE, SIZE, CV_32S, &resultMatrix,2); 
    namedWindow("Display window", CV_WINDOW_AUTOSIZE); 
    imshow("Display window", A); 

이 코드 블록은 항상 검은 색 화면을 표시합니다. 또한 크기를 10으로 변경하고 1 행과 0으로 화면을 인쇄하는 것이 맞습니다 (OpenCV 버전은 2.4.5입니다). (OpenCV 버전은 2.4.5입니다.)

또한이 코드의 끝에서 완벽하게 실행되는 wait(0) 코드가 있습니다.

+0

'resultMatrix'의 초기화에 대한 자세한 내용을 게시 할 수 있습니까? – Aurelius

+0

랜덤 0과 1로 초기화됩니다. –

+0

"details"는'resultMatrix'를 초기화하는 코드를 의미합니다. – Aurelius

답변

0

내가 잘못하지 않으면 나는 과거에도 비슷한 문제가 발생했다. imshow("Display window", A); 후에 waitKey(1); 행을 추가해보십시오. 그것이 저에게 효과가 있었다고 생각합니다.

+0

죄송하지만 모든 코드 블록은 괜찮습니다. 그것의 이미 거기. –

+0

OpenCV Libs에없는 함수'wait (0)'을 사용합니다. 즉,'imshow()는'Sleep()'과 같이 지연을 만드는 외부 함수와는 다릅니다. 'waitKey (1)'만이 검은 화면과 같은 문제를 일으키지 않습니다. 적어도 나는 그런 문제가 있었다. – Givi

+0

나는 둘 다 시도했지만 작동하지 않았다. 하지만 난 정적으로 갑자기 그것이 일을 시작 매트를 생성자에서 int ** 형식을 사용할 수 없습니다 플로트로 매트릭스 유형을 변경 했나요? –

0

CV_8U를 유형 매개 변수로 사용해보십시오.

매트 A = 매트 (SIZE, SIZE, CV_8U, & resultMatrix);

0

OpenCv doc은 imshow가 표시하기 전에 255로 값을 나눕니다. 당신은 데이터가 0이되지 않도록 데이터의 크기를 조정해야합니다. true white의 경우 255 * 255이어야 함