(一)知识点
(二)API
①getStructuringElement()【获取结构元素】
Mat getStructuringElement(int shape, Size ksize, Point anchor = Point(-1,-1));
参数解释:
int shape:结构元素形状(枚举类型),有MORPH_RECT (矩形)、MORPH_CROSS (十字形)、MORPH_ELLIPSE (椭圆形)
Size ksize:尺寸。十字形(可以理解为刻在矩形中的十字形),椭圆形(也可以理解为可在椭圆中的椭圆形)【若结构元素size越大,则最后腐蚀/膨胀的效果越像素化】
Point anchor:锚点。元素内的锚点位置。默认值 (-1, -1)表示锚点位于中心。请注意,只有十字形元素的形状取决于锚点位置。在其他情况下,锚点只是调节形态操作的结果偏移的程度。
②erode()【腐蚀,前景变少,背景变多】
void erode( InputArray src, OutputArray dst, InputArray kernel,
Point anchor = Point(-1,-1), int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar& borderValue = morphologyDefaultBorderValue() );
参数解释:(参考(15条消息) opencv之erode()函数_duwangthefirst的博客-CSDN博客_cv::erode
(15条消息) opencv-腐蚀erode()_极简的博客-CSDN博客
tips:一般只填前三个参数即可
参数1:InputArray类型的src,输入图像,填Mat类的对象即可。
参数2:OutputArray类型的dst,即目标图像,需要和输入图片有一样的尺寸和类型。
参数3:InputArray类型的kernel,膨胀操作的核。若为NULL时,表示的是使用参考点位于中心3x3的核。
参数4:Point类型的anchor,锚的位置,其有默认值(-1,-1),表示锚位于中心。
参数5:int类型的iterations,迭代使用erode()函数的次数,默认值为1。
参数6:int类型的borderType,用于推断图像外部像素的某种边界模式,它有默认值BORDER_DEFAULT。
参数7:不用管
③dilate()【膨胀,前景变多,背景变少】
参数同erode
(三)代码展示
(四)运行效果