2011-12-15 14 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" 

デバッガによれば、例外が処理の途中(約40%)equalizeHistの画像で投げられました。私は何かする必要がありますか? FYI:私は、そのWebサイトから提供されたバイナリOpenCVを使用しています。

UPDATE:

私はそれを均等化する前にグレーレベルに画像を変換することによって、この問題を解決してきました。私はちょうど

  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

関連する問題