私はopencvを勉強しており、本と次の例を読んでいます。本はキャニーフィルターを紹介した。しかし、私の出力にはいくつか問題があります。入力画像として私は512x512グレースケール画像を与えたが、フィルタ出力は純粋なグレー画像である。画像は次のとおりです。OpenCV canny;出力画像は純粋な灰色です
これは入力画像です。
そして、これは、出力画像です。
そして、ここでスニペットです:
#include <opencv\cv.h>
#include <opencv2\highgui\highgui.hpp>
#include "Resources.h"
IplImage* doCanny(
IplImage* in,
double lowThresh,
double highThresh,
double aperture
) {
if (in->nChannels != 1)
{
return 0; // Canny only handle gray scale images.
}
IplImage* out = cvCreateImage(
CvSize(cvGetSize(in)),
IPL_DEPTH_8U,
1
);
cvCanny(in, out, lowThresh, highThresh, aperture);
return out;
}
int main(int argc, char** argv)
{
IplImage* image = cvLoadImage(IMAGE_FRUIT);
IplImage* output = doCanny(image, 200, 201, 1);
cvNamedWindow("Canny", CV_WINDOW_AUTOSIZE);
cvShowImage("Canny", output);
cvWaitKey(0);
cvReleaseImage(&output);
cvDestroyWindow("Canny");
return 0;
}
のVisual Studio 2015、OpenCVのバージョン2.4.13
うん。私はコードをデバッグしましたが、実際にはイメージはグレースケールではありません。 'in-nChannels'の値は3であるため、呼び出されません。 – Bora