OpenCV边缘检测

void OnCanny() 
{
	// TODO: Add your command handler code here
	IplImage* img = cvCreateImage(cvGetSize(GetDocument()->Image),IPL_DEPTH_32F, 0);
	
	IplImage* image1 = cvCloneImage(GetDocument()->Image);  
	IplImage* image2 = cvCreateImage(cvGetSize(image1),
					  IPL_DEPTH_8U,
					  1);
	IplImage* pCannyImg = cvCreateImage(cvGetSize(image1),
					  IPL_DEPTH_8U,
					  1);
	//  convert the inoput image to gray image 
	cvCvtColor(image1, image2, CV_BGR2GRAY);
	//cvSaveImage("gray.bmp", image2);	  	
	
	cvCanny(image2, pCannyImg, 5, 150, 3);
	global_image = cvCloneImage(pCannyImg);

	cvNamedWindow("Cannyedge", CV_WINDOW_AUTOSIZE);
	cvShowImage("Cannyedge", pCannyImg);	 

}

void OnLaplace() 
{
	// TODO: Add your command handler code here
	IplImage* img = cvCreateImage(cvGetSize(GetDocument()->Image),IPL_DEPTH_32F,3);
	cvLaplace(GetDocument()->Image, img,3);
	global_image = cvCloneImage(img);

	cvNamedWindow("src1",CV_WINDOW_AUTOSIZE);
	cvShowImage("src1",img);
}
OnSobel() 
{
	// TODO: Add your command handler code here
	IplImage* img = cvCreateImage(cvGetSize(GetDocument()->Image),IPL_DEPTH_32F,3);
	cvSobel(GetDocument()->Image,img,2,2,3);   	
	global_image = cvCloneImage(img);

	cvNamedWindow("src1",CV_WINDOW_AUTOSIZE);
	cvShowImage("src1",img);
	
}
void OnCannyColor()
{
	// TODO: Add your command handler code here
	IplImage* img = cvCreateImage(cvGetSize(GetDocument()->Image),IPL_DEPTH_32F, 0);
	
	IplImage* image1 = cvCloneImage(GetDocument()->Image);  
	int channels  = image1->nChannels;  
	
	IplImage *RedImg,*GreenImg,*BlueImg;
	IplImage *RedCanny,*GreenCanny,*BlueCanny;
	IplImage* image2 = cvCreateImage(cvGetSize(image1),
					  IPL_DEPTH_8U,
					  3);
	
	RedImg=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);
	GreenImg=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);
	BlueImg=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);

	RedCanny=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);
	GreenCanny=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);
	BlueCanny=cvCreateImage(cvGetSize(image1),IPL_DEPTH_8U,1);
 	
	cvSplit(image1, BlueImg, GreenImg, RedImg, 0);	 // 图层分离
		
	cvCanny(BlueImg, BlueCanny, 5, 150, 3);
	cvCanny(GreenImg, GreenCanny, 5, 150, 3);
	cvCanny(RedImg, RedCanny, 5, 150, 3);

	cvMerge(BlueCanny, GreenCanny, RedCanny, 0, image2);	   
	 	
	cvNamedWindow("Cannyedge", CV_WINDOW_AUTOSIZE);
	cvShowImage("Cannyedge", image2);
	global_image = cvCloneImage(image2);

	cvReleaseImage(&BlueImg);
	cvReleaseImage(&GreenImg);	
	cvReleaseImage(&RedImg);
	cvReleaseImage(&BlueCanny);
	cvReleaseImage(&GreenCanny);
	cvReleaseImage(&RedCanny);	
	cvReleaseImage(&image1);
	//cvReleaseImage(&image2);	 
}
void OnCannyDyn() 
{
	// TODO: Add your command handler code here
	IplImage* img = cvCreateImage(cvGetSize(GetDocument()->Image),IPL_DEPTH_32F, 0);
	
	IplImage* image1 = cvCloneImage(GetDocument()->Image);  
	global_image1 = cvCloneImage(image1);  

	//
	// Create the output image
    cedge = cvCreateImage(cvGetSize(image1), IPL_DEPTH_8U, 3);

    // 将彩色图像转换为灰度图像
    gray = cvCreateImage(cvGetSize(image1), IPL_DEPTH_8U, 1);
    edge = cvCreateImage(cvGetSize(image1), IPL_DEPTH_8U, 1);
    cvCvtColor(image1, gray, CV_BGR2GRAY);

    // Create a window
    cvNamedWindow(wndname, 1);

    // create a toolbar 
    cvCreateTrackbar(tbarname, wndname, &edge_thresh, 128, on_trackbar);

    // Show the image
    on_trackbar(0);
	
    // Wait for a key stroke; the same function arranges events processing
    cvWaitKey(0);
    cvReleaseImage(&image1);
    cvReleaseImage(&gray);
    cvReleaseImage(&edge);
	cvReleaseImage(&global_image);	 
    cvDestroyWindow(wndname);
	///	
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值