int main()
{
IplImage * img = NULL; //建立一IplImage之指標變數並設值為NULL
IplImage * pImage = NULL;
IplImage * pImgCanny = NULL;
IplImage * pImg8u = NULL;
IplImage * pImg8uSmooth = NULL;
img=cvLoadImage("img.jpg");//把圖片叫進來
pImage = cvCloneImage(img);//把img複製到pImage
pImg8u = cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);
//創造跟pImage一樣的大小深度為8無符號的圖
pImgCanny = cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);
pImg8uSmooth = cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);
cvCvtColor(pImage,pImg8u,CV_BGR2GRAY);//把pImage轉成灰階存放到pImg8u
cvSmooth(pImg8u,pImg8uSmooth,CV_GAUSSIAN,3,0,0);
cvCanny(pImg8uSmooth,pImgCanny,100,200,3);// 採用 Canny 演算法做邊緣檢測
cvConvertScaleAbs(pImgCanny,pImg8u,1,0);// 使用線性變換轉換輸入數組元素成8位無符號整型
cvvNamedWindow("Canny Image",1);// //視窗名稱為Canny Image
cvvShowImage("Canny Image",pImg8u);// 顯現出pImg8u的圖片
cvWaitKey(0);// 等待key按下之時間(<=0為無線等待)
cvDestroyWindow("Canny Image");//銷毀Canny Image之視窗
cvReleaseImage(& pImage);// 把pImage之圖片釋放
cvReleaseImage(& pImgCanny);// 把pImgCanny之圖片釋放
cvReleaseImage(& pImg8u);// 把pImg8u之圖片釋放
cvReleaseImage(& pImg8uSmooth);// 把pImg8uSmooth之圖片釋放
}
沒有留言:
張貼留言