opencv —— erode、dilate 腐蚀与膨胀

腐蚀与膨胀是形态学滤波。其中,腐蚀是最小值滤波,膨胀是最大值滤波,即分别选取内核中的最小值与最大值赋值给锚点。若内核为 N×1 或 1×N 形状,可用于横纵方向直线检测。

膨胀:dilate 函数

void dilate (InputArray src, OutputArray dst, InputArray kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar& borderValue = morphologyDefaultBorderValue());

  • src,输入图像,即原图像,填 Mat 类的对象即可。
  • dst,目标图像,需要和原图片有一样的尺寸和类型。
  • kernel,膨胀操作的核。当为 NULL 时,表示的是使用参考点位于中心,大小 3×3 的核。

一般用函数 getStructuringElement 配合这个参数使用。

例如:Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));

Mat getStructuringElement(int shape, Size ksize, Point anchor = Point(-1, -1));

    • shape,矩形:MORPH_RECT

交叉形:MORPH_CROSS

椭圆形:MORPH_ELLIPSE

    • ksize,内核的尺寸。
    • anchor,锚点的位置,默认位于中心。
  • anchor,锚点的位置,默认位于中心。
  • iterations 迭代使用 dilate() 的次数,默认值为 1。
  • borderType,边界拓展的方法。
  • borderValue,当边界为常数时的边界值,有默认值,一般不用管。

 

腐蚀: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());

  • 成员函数意义几乎和 dilate 一致

 

posted @ 2020-02-11 15:50  狂奔的小学生  阅读(2363)  评论(0编辑  收藏  举报