openCV图像形态学

 1 #include <cv.h>  
 2 #include <highgui.h>  
 3 #include <stdio.h>  
 4 //平滑处理
 5 
 6 int main()
 7 {
 8     IplImage* src = cvLoadImage("../pic.jpg");
 9     IplImage* dst = cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,3);
10     IplImage* temp = cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,3);
11     //cvErode(src,dst,NULL,5); //腐蚀:亮的区域被隔离且缩小
12     //cvDilate(src,dst,NULL,5);  //膨胀:亮的区域得到扩展和连接
13 
14     /*形态运算*/
15     IplConvKernel* element = cvCreateStructuringElementEx(4,4,2,2,CV_SHAPE_RECT);
16     //cvMorphologyEx(src,dst,temp,element,CV_MOP_OPEN,1); //开运算:先腐蚀再膨胀,去除小的明亮区域,并且剩余的明亮区域被隔绝,但其大小不变 
17     //cvMorphologyEx(src,dst,temp,element,CV_MOP_CLOSE,1); //闭运算:先膨胀再腐蚀,亮的区域连在一起,但他们基本的大小不变
18     //cvMorphologyEx(src,dst,temp,element,CV_MOP_GRADIENT,1);//梯度:膨胀-腐蚀,将边缘以高亮区域突出
19     //cvMorphologyEx(src,dst,temp,element,CV_MOP_TOPHAT,1);    //“礼帽”:原 -  开运算,局部亮度极大点被分割出,突出比其周围更明亮的区域
20     cvMorphologyEx(src,dst,temp,element,CV_MOP_BLACKHAT,1); //“黑帽”:闭运算 - 原,黑色“洞”被分割出,突出比其周围的区域黑暗的区域
21 
22     cvNamedWindow("形态",1);
23 
24     cvShowImage("形态",dst);
25 
26 
27     while (1)
28     {
29         if(cvWaitKey(15) == 27) break;
30 
31     }
32     cvReleaseImage(&dst);
33     cvDestroyAllWindows();
34 }

 

posted @ 2016-07-21 09:56  Gladitor  阅读(301)  评论(0编辑  收藏  举报