首页 > 代码库 > 腐蚀和膨胀
腐蚀和膨胀
腐蚀:
cvErode
锚点:用于判断的中心点
关心点:为0不关心,为1关心
腐蚀的时候锚点对准图像的像素,这个像素的值取锚点和关心点中的最小值,注意都是和原图像对比,前面因腐蚀变化的点不影响后面腐蚀的点
膨胀:
cvDilate
和腐蚀相反,取锚点和关心点中的最大值
程序:
代码:
#include "cv.h" #include "cxcore.h" #include "highgui.h" #include <iostream> int ErodeDilate(int argc,char** argv) { IplImage* image=cvLoadImage("e:\\picture\\5.JPG"); cvNamedWindow("src"); cvShowImage("src",image); //步骤1:创建自定义元素 int cols=4; //定义元素的列数 int rows=4; //定义元素的行数 int anchor_x=2; //定义锚点在这个元素中的x坐标,注意坐标从0开始 int anchor_y=2; //定义锚点的y坐标 int value[]={0,0,0,0, 0,0,1,0, 0,1,1,0, 0,0,0,0 }; IplConvKernel* element=cvCreateStructuringElementEx(cols,rows,anchor_x,anchor_y,CV_SHAPE_CUSTOM,value); //步骤2:先膨胀,取最大值,去掉黑色(小值)点 IplImage* DilateDst=cvCreateImage(cvGetSize(image),8,3); cvDilate(image,DilateDst,element,5); cvNamedWindow("DilateDst"); cvShowImage("DilateDst",DilateDst); //步骤3:再腐蚀,扩大小值(如黑色部分) IplImage* ErodeDst=cvCreateImage(cvGetSize(DilateDst),8,3); cvErode(DilateDst,ErodeDst,element,5); cvNamedWindow("ErodeDst"); cvShowImage("ErodeDst",ErodeDst); cvWaitKey(0); cvDestroyWindow("src"); cvDestroyWindow("DilateDst"); cvDestroyWindow("ErodeDst"); cvReleaseImage(&image); cvReleaseImage(&DilateDst); cvReleaseImage(&ErodeDst); return 0; }
本文出自 “flyclc” 博客,请务必保留此出处http://flyclc.blog.51cto.com/1385758/1540053
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。