次のコードがあるとします。
#include "stdafx.h"
#include "opencv\highgui.h"
#include "opencv2\imgproc\imgproc.hpp"
#include "opencv2\core\core.hpp"
#include "opencv\cv.h"
using namespace cv;
IplImage* doPyrDown(IplImage*,int );
IplImage* doCanny(IplImage*,double,double,double);
int main()
{
const char*a ="D:\\s.jpg" ;
IplImage* in = cvLoadImage(a);
IplImage* img1 = doPyrDown( in, IPL_GAUSSIAN_5x5 );
IplImage* img2 = doPyrDown( img1, IPL_GAUSSIAN_5x5 );
IplImage* img3 = doCanny( img2, 10, 100, 3 );
cvNamedWindow("in",CV_WINDOW_AUTOSIZE);
cvNamedWindow("img1",CV_WINDOW_AUTOSIZE);
cvNamedWindow("img2",CV_WINDOW_AUTOSIZE);
cvNamedWindow("img3",CV_WINDOW_AUTOSIZE);
cvShowImage("in",in);
cvShowImage("img1",img1);
cvShowImage("img2",img2);
cvShowImage("img3",img3);
cvWaitKey(0);
cvReleaseImage( &in );
cvReleaseImage( &img1 );
cvReleaseImage( &img2 );
cvReleaseImage( &img3 );
cvDestroyWindow("in");
cvDestroyWindow("img1");
cvDestroyWindow("img2");
cvDestroyWindow("img3");
return 0;
}
//Using cvPyrDown() to create a new image that is half the width and height of the input
//image
IplImage* doPyrDown(IplImage* in,int filter = CV_GAUSSIAN_5x5)
{
// Best to make sure input image is divisible by two.
//
assert( in->width%2 == 0 && in->height%2 == 0 );
IplImage* out = cvCreateImage(cvSize( in->width/2, in->height/2 ),in->depth,in->nChannels);
cvPyrDown( in, out );
return( out );
}
//The Canny edge detector writes its output to a single channel (grayscale) image
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(cvGetSize(in),IPL_DEPTH_8U,1);
cvCanny( in, out, lowThresh, highThresh, aperture );
return( out );
}
このコードにはコンパイル エラーはありません。問題は、ウィンドウに画像が表示されないことです。これはimg3
、私が提供するすべての画像を非単一チャネル画像として識別し
、コンピューターで見つかったすべてのグレースケール画像を試してネットを検索しif(in->nChannels != 1)
たコードを入力して実行するためです。return(0);
単一チャネルの画像の場合ですが、すべてにこの問題があります。私はブレークポイントを置き、私が与えたすべての画像に対してコードを段階的に試しました??!!!!
openCV ライブラリのシングル チャネル イメージとして知られているイメージの種類を教えてください。また、上記のコードで動作するようなイメージへのリンクを教えてください。