图像腐蚀,即用图像中的暗色部分“腐蚀”掉图像中的高亮部分。
在使用图像腐蚀函数之前,我们还需要了解 getStructuringElement 函数
函数原型
Mat getStructuringElement(int shape, Size esize, Point anchor = Point(-1, -1));
其中这个函数的第一个参数表示内核的形状,有三种形状可以选择。
矩形:MORPH_RECT;
交叉形:MORPH_CORSS;
椭圆形:MORPH_ELLIPSE;
第二和第三个参数分别是内核的尺寸以及锚点的位置。一般在调用
erode**腐蚀**
dilate**膨胀**函数之前
先定义一个Mat类型的变量来获得getStructuringElement函数的返回值。对于锚点的位置,有默认值Point(-1,-1),表示锚点位于中心点。element形状唯一依赖锚点位置,其他情况下,锚点只是影响了形态学运算结果的偏移。
了解完getStructuringElement后,我们就可以使用腐蚀函数了
函数原型
void erode(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1,intborderType=BORDER_CONSTANT,constScalar&borderValue=morphologyDefaultBorderValue() )
是不是很长?但是有了上面的函数,创建一个Mat变量,例如
Mat element;
调用上面的函数
Mat element = getStructurningElement(MORPH_RECT,size(-1,-1));即可得到腐蚀函数后面的相关参数
只需要
erode(src,dst,element);即可完成腐蚀
注
可能有些人选用的《openCV3编程入门》电子工业出版社这本书
由于版本原因相关函数位置已不在书上注明的函数里面,想求方便的话只需要额外添加
include<opencv.hpp>
这行代码