腐蚀Erosion是通过API函数erode来实现的(膨胀和腐蚀使用上一样使用API函数Dilate)
腐蚀效果如下:
原图像: 执行函数erode后:
从效果上来看,erode是通过一个核(结构元素)矩阵,在图像上滑动
腐蚀膨胀原理,请访问https://blog.csdn.net/qq_25847123/article/details/73744575
erode(const Mat &src, Mat &dst, Mat kernel, Point anchor=Point(-1,-1), int iterations=1)
src:输入图像,可以多通道,深度可为CV_8U、CV_16U、CV_16S、CV_32F或CV_64F。
dst:输出图像,尺寸,通道与输入图像相同。
kernel:结构元素,如果kernel=Mat()则默认为3*3的矩阵,kernel越大则侵蚀效果越明显。
anchor:锚点位置,默认为结构中央位置。
iterations:执行次数,默认执行一次,执行次数越多侵蚀效果越明显。
使用erode一般还会用到另一个API函数getStructuringElement(获得结构元素kernel)
Mat getStructuringElement(int shape, Size esize, Point anchor = Point(-1, -1));
shape:获得结构元素的形状 使用枚举enum { MORPH_RECT=0, MORPH_CROSS=1, MORPH_ELLIPSE=2 };
0---矩形:MORPH_RECT
1---十字交叉型:MORPH_CROSS
2---椭圆:MORPH_ELLIPSE
esize:内核的尺寸(一般为奇数3*3 5*5 7*7.....)
anchor:锚点位
返回一个Mat的结构元素
如下列子
执行结果如下: