2

あなたが私を助けてくれることを願っています。

私はQTを使用しており、画像のエッジを簡単に検出しようとしています。しかし、起動するとプログラムがクラッシュします

cv::GaussianBlur( src, src, cv::Size(3,3), 0, 0, cv::BORDER_DEFAULT );

また

cv::Sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, cv::BORDER_DEFAULT );

これが私のコードです:

QImage      *image1;    
IplImage    *cv_image1;

image1 = new QImage("./image.png");  // Format is ARGB32
cv_image1 = QImage2IplImage(image1);
cv::Mat src(cv_image1);

cv::imshow(window_name, src); // Work Well
cv::Mat src_gray;
int scale = 1;
int delta = 0;
int ddepth = CV_16S;

cv::GaussianBlur(src, src, cv::Size(3,3), 0, 0, cv::BORDER_DEFAULT); //Crash Here
cv::imshow( window_name, src);

それはフォーマットの問題だったと思います。しかし、ARGB32のQIMAGESを使用する別のプログラムでは、このコードはうまく機能します。ありがとうございました。

4

2 に答える 2

0

私は解決策を見つけました。それは奇妙ですが、私がそうするとき:

cvtColor(src, src_gray, CV_RGB2GRAY );
cv::Sobel(src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, cv::BORDER_CONSTANT);

cv::GaussianBlur がなくてもうまくいきます。最後のパラメーターを cv::BORDER_CONSTANT に変更するだけです

于 2012-06-15T07:40:12.870 に答える