OpenCV边缘检测

来源:互联网 发布:网络黄金为什么没上市 编辑:程序博客网 时间:2024/04/29 11:42
void OnCanny() {// TODO: Add your command handler code hereIplImage* 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 hereIplImage* 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 hereIplImage* 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 hereIplImage* 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 hereIplImage* 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);///////////////////////////////////////////////////////////////}