visual studio 2017 version 15.8.4で
opencv3.1.0の関数を利用する時に
Assertion failed が起きたり起きなかったりするのですが
どうしてこれが発生するのでしょうか?
この問題を解消するためにはどうしたら良いのでしょうか?
Mat型の引数を持つ関数
cvtColor split merge imwrite
などを呼ぶ時に発生します。
Mat image = imread("image.jpg" , IMREAD_UNCHANGED);
Mat a = function( image );
imwrite( "output.jpg" , a );
Mat function( Mat image ){
Mat hsv_image , conv_image ;
Mat channels[3];
cvtColor( image , hsv_image , CV_RGB2HSV );
split(hsv_image, channels);
merge(channels, 3, hsv_image);
cvtColor( hsv_image, conv_image , CV_HSV2RGB);
return conv_image;
}
cvtColor split merge imwrite を呼ぶ時にエラーが発生したりしなかったりします。
エラーメッセージはこちらです。
これが、必ず発生する訳ではなく、順番によって起きたり起きなかったりするのです
OpenCV Error: Assertion failed ((scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F)) in cv::ipp_cvtColor,
file opencv-3.1.0\modules\imgproc\src\color.cpp, line 7646
また、return 文で停止したりもします。
デバッグで確かめると、Mat変数について、ヒープが壊れていますのメッセージが
出たり出なかったりするのです
画像自体はどれも問題ない画像ファイルです。
Matで画像を配列で用意してfunctionを呼ぶと起きなかったり、配列の数によっては起きたりと言った事が
なぜこの問題が生じるのでしょうか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/05 06:14
2018/10/05 06:26