#include "cv.h" #include "cxcore.h" #include "highgui.h" #include"stdio.h" int main( int argc, char** argv ) { //声明IplImage指针 IplImage* pImg = NULL; IplImage* pCannyImg = NULL; IplImage* pLaplaceImg=NULL; IplImage* pTempImg=NULL; IplImage* pSobelImg=NULL; // IplImage* pTempImg2=NULL; //载入图像,强制转化为Gray //if( argc == 2 && // (pImg = cvLoadImage(argv[1], 0)) != 0 ) // { pImg = cvLoadImage("lena.jpg", CV_LOAD_IMAGE_GRAYSCALE); //为canny边缘图像申请空间 pCannyImg = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 1); pLaplaceImg = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_16S, 1); pTempImg = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 1); pSobelImg = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_32F, 1); //pTempImg2 = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,1); //canny边缘检测 cvCanny(pImg, pCannyImg, 50, 150, 3); //Laplace边缘检测 cvLaplace(pImg,pLaplaceImg,3); cvConvert(pLaplaceImg,pTempImg);//为16S无法输出故需要转换 //Sobel边缘检测 cvSobel(pImg,pSobelImg, 1, 0); //cvConvertScaleAbs(pSobelImg,pTempImg2,1,0); //创建窗口 cvNamedWindow("src", 1); cvNamedWindow("canny",1); cvNamedWindow("Laplace",1); cvNamedWindow( "Sobel",1); //显示图像 cvShowImage( "src", pImg ); cvShowImage( "canny", pCannyImg ); cvShowImage("Laplace",pTempImg); cvShowImage("Sobel",pSobelImg); cvWaitKey(0); //等待按键 //销毁窗口 // cvDestroyWindow( "src" ); // cvDestroyWindow( "canny" ); // cvDestroyWindow("Laplace"); //cvDestroyWindow( "Sobel" ); cvDestroyAllWindows(); //释放图像 cvReleaseImage( &pImg ); cvReleaseImage( &pCannyImg ); cvReleaseImage( &pTempImg ); cvReleaseImage(&pLaplaceImg); cvReleaseImage( &pSobelImg); return 0; //} //return -1; }