//
//# include <opencv\cv.h>
//# include <opencv\highgui.h>
//
//void example2_5(IplImage* image)
// {
// //입력 영상과 결과 영상을 나타낼 윈도우 생성
// //
// cvNamedWindow("Example4-in");
// cvNamedWindow("Example4-out");
//
// //입력창에 영상보여주기
// //
// cvShowImage("Exameple4-in",image);
//
// //스무딩 연산이 적용된 결과 영상을 저장할 변수 생성
// //
// IplImage* out = cvCreateImage(
// cvGetSize(image),
// IPL_DEPTH_8U,
// 3
// );
// //스무딩 연산 실행
// //
// cvSmooth(image , out, CV_GAUSSIAN, 3,3);
//
// //결과 창에 영상 보여주기
// //
// cvShowImage("Example4-out",out);
//
// //결과 영상에 관련된 메모리 해제
// //
// cvReleaseImage(&out);
//
// //사용자가 키를 누를 때까지 기다렸다가 윈도우 소멸
// //
// cvWaitKey(0);
// cvDestroyWindow("Example4-in");
// cvDestroyWindow("Example4-put");
// }
//
//
// IplImage* doCannay(
// IplImage* in,
// double lowThresh,
// double highThresh,
// double aperture
// )
// { if(in->nChannels != 1)
// return(0); //Canny엣지 검출기는 오직 그레이스케일 영상만들 다룬다.
//
// IplImage* out = cvCreateImage(
// cvGetSize(in),
// IPL_DEPTH_8U,
// 1
// );
// cvCanny(in,out,lowThresh,highThresh,aperture);
// return(out);
//
// }
// int main(int argc,char** argv)
// {
//
//
// //IplImage* img = cvLoadImage(argv[1]);
// IplImage* img = cvLoadImage("c:/opencv/build/doc/opencv-logo.png");
// example2_5(img);
// cvReleaseImage(&img);
//
// //IplImage* out = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
//
//
//
// }
# include <opencv\cv.h>
# include <opencv\highgui.h>
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 ),
in->depth, //IPL_DEPTH_8U,
1);
cvCanny( in, out, lowThresh, highThresh, aperture );
return( out );
};
int main( int argc, char** argv )
{
//IplImage* img_rgb = cvLoadImage( argv[1] );
IplImage* img_rgb = cvLoadImage("c:/opencv/build/doc/opencv-logo.png" );
IplImage* img_gry = cvCreateImage( cvSize( img_rgb->width,img_rgb->height ), img_rgb->depth, 1);
cvCvtColor(img_rgb, img_gry ,CV_BGR2GRAY);
cvNamedWindow("Example Gray", CV_WINDOW_AUTOSIZE );
cvNamedWindow("Example Canny", CV_WINDOW_AUTOSIZE );
cvShowImage("Example Gray", img_gry );
IplImage* img_cny = doCanny( img_gry, 10, 100, 3 );
cvShowImage("Example Canny", img_cny );
cvWaitKey(0);
cvReleaseImage( &img_rgb);
cvReleaseImage( &img_gry);
cvReleaseImage( &img_cny);
cvDestroyWindow("Example Gray");
cvDestroyWindow("Example Canny");
}

** 캐니 엣지 검출기의 결과 영상은 입력 영상과 크기가 같고,단일 채널로 이루어져 있다.