O'Reillyシリーズの「LearningOpenCV」という本を読んでいて、キャニーエッジ検出サンプルを実行しようとしています。
私が選択したグレースケール画像は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チャンネルの画像が得られるのでしょうか。どうすればこれを解決できますか?