2011-12-19 13 views
0

opencvで画像処理関数を使用するたびに、C++ランタイムエラーが発生します。 「アプリケーションが異常な方法でそれを終了することを要求した」OpenCV imgproc関数を使用するとエラーが発生します(2)

これは私のコードであり、私が得る

#include <opencv2/opencv.hpp> 
#include <string> 

int main() { 
    cv::Mat a = cv::imread("img.jpg"); 
    cv::Mat b(a); 

    cv::Canny(a,b,250,300); 
    cv::namedWindow("Hello"); 
    cv::imshow("Hello",b); 
    cv::waitKey(2000); 
    return 0; 
} 
+0

あなたはcmakeでライブラリを再構築しましたか? –

+0

あなたはあなたのOSを投稿することもできますか(私はWindowsだと思っていますが、確信しています)、環境を構築できますか? – mevatron

+0

init 'b(a)'はまったく役に立たない。 'Mat b'は安全に書くことができます。 – Sam

答えて

0

あなたは「」関数imread後に何であるかチェックすることがありますか?

"img.jpg"が別のディレクトリにあるか、権限がないために失敗した場合はどうすればいいですか?

+0

@tomelseこれは 'if(a.empty())/ *印刷エラー* /'を追加することを意味します。 – karlphillip

2

cv::Canny機能には常に入力としてグレースケールイメージが必要です。 aをグレースケールに変換する必要があります。次のコードスニペットは、このトリックを行います:

cv::cvtColor(a, a, CV_BGR2GRAY); 
+0

または(カラー版が後で必要ない場合は) cv :: imread( "img.jpg"、0); 'cvの詳細については、[here](http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html#imread)を参照してください。 :imread() – Chris

関連する問題