您的位置:首页 > 运维架构

opencv(5)形态学操作

2012-06-08 03:41 337 查看
图像形态学一般用于阈值化后的二值图像,其实也可以用于灰度图像的处理,这篇文章主要对灰度中的应用做分析。

1.膨胀与腐蚀

形态学操作例子
cvNamedWindow("src");
cvNamedWindow("dst");

IplImage *img=cvLoadImage("12.bmp");
IplImage *img2 = cvCreateImage(cvSize(img->width,img->height),IPL_DEPTH_8U,1);
IplImage *img3 = cvCreateImage(cvSize(img->width,img->height),IPL_DEPTH_8U,1);
cvCvtColor(img,img2,CV_BGR2GRAY);
cvThreshold(img2,img2,60,255,CV_THRESH_BINARY);
cvShowImage("src",img2);
cvSaveImage("src.jpg",img2);

IplConvKernel* t = cvCreateStructuringElementEx(7, 7, 4,4,CV_SHAPE_ELLIPSE);
IplConvKernel* t2 = cvCreateStructuringElementEx(5, 5, 3,3,CV_SHAPE_ELLIPSE);

cvMorphologyEx(img2,img3,NULL,t2,CV_MOP_OPEN);
cvMorphologyEx(img3,img3,NULL,t2,CV_MOP_OPEN);

cvMorphologyEx(img3,img3,NULL,t,CV_MOP_CLOSE);
cvMorphologyEx(img3,img3,NULL,t,CV_MOP_CLOSE);

cvReleaseStructuringElement( &t );
cvReleaseStructuringElement( &t2 );
cvSaveImage("dst.jpg",img3);

cvShowImage("dst",img3);

cvWaitKey();

cvDestroyWindow("dst");
cvDestroyWindow("src");
return 0;


即先进性2次开运算,扩大边缘的噪声,在使用闭运算,连接边缘的毛刺,开运算和闭运算的结果如下:







经过开运算,闭运算后,边缘平滑很多,这并不是一个很好的例子,手边刚好有这么一张图片,就一次来说明问题而已

剩下 的明天再说吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: