2011-12-15 9 views
2

내 MFC 앱이 OpenCV2에서 다양한 API를 실행합니다. 다른 모든 것은 잘 작동합니다. 하지만 내 프로그램이 실행될 때OpenCV의 equalizeHist에서 응용 프로그램이 충돌합니다

cv::Mat result; 
cv::equalizeHist(m_cvImage,result); 

다음과 같은 예외가 발생합니다.

Unhandled exception at 0x7727fbae in OpenCVTest.exe: Microsoft C++ exception: cv::Exception at memory location 0x0029e944.. 

"C:\slave\WinInstallerMegaPack\src\opencv\modules\imgproc\src\histogram.cpp:2430: error: (-215) CV_ARE_SIZES_EQ(src, dst) && CV_ARE_TYPES_EQ(src, dst) && CV_MAT_TYPE(src->type) == CV_8UC1" 

디버거에 따르면 equalizerHist의 이미지 처리 중 (약 40 %) 예외가 발생했습니다. 내가해야 할 일이 있습니까? FYI : 자사 웹 사이트에서 제공하는 OpenCV를 사용하고 있습니다.

업데이트 :

나는 이미지가 회색 수준을로 변환을 균등화하기 전에이 문제를 해결했습니다. 난 그냥

  1. 기능은 회색 수준의 이미지가 아닌 회색이 될 수 그레이 레벨과 같이
  2. 이미지와 함께 작동 몰랐다.

답변

7

내가 직면 한 문제는 m_cvImage이 3 채널 이미지라는 것입니다. 따라서 equalizeHist으로 전화하기 전에 이미지를 그레이 스케일 이미지로 변환해야합니다. 또한

cvtColor(m_cvImage, m_cvImage, CV_BGR2GRAY); 

cv::Mat result; 
cv::equalizeHist(m_cvImage, result); 

, 그것이 어떻게 사용되는지 볼 수있는 EqualizeHist_Demo.cpp 튜토리얼의 샘플을 살펴 있습니다.

+0

정확합니다. 나는 당신이 일찍 게시했기를 바랍니다. 어쨌든 고마워. –

+0

@Paul 내 답변을 쓰는 ​​동안 내 게시물을 업데이트했다고 생각합니다. :) – mevatron

관련 문제