我正在阅读 O'Reilly 系列中的“Learning OpenCV”一书,并尝试执行一个精明的边缘检测示例。
我选择的任何灰度图像似乎都有 3 个通道,据我所知,canny 只适用于单通道图像,所以这总是失败。我什至在使用 OpenCV 提供的图像。
这是我的代码..
IplImage* doCanny(IplImage* in, double lowThresh, double highThresh, double aperture)
{
if(in->nChannels != 1)
return(0); //canny only handles gray scale images
IplImage* out = cvCreateImage(cvSize(in->width, in->height), IPL_DEPTH_8U, 1);
cvCanny(in, out, lowThresh, highThresh, aperture);
return(out);
};
IplImage* img = cvLoadImage("someGrayscaleImage.jpg");
IplImage* out = doCanny(img, 10, 100, 3);
为什么这总是给我 3 通道图像?我该如何解决这个问题?