zoukankan      html  css  js  c++  java
  • opencv —— morphologyEx 开运算、闭运算、形态学梯度、顶帽、黑帽

     开运算:先腐蚀后膨胀。

    能够排除小亮点。

    闭运算:先膨胀后腐蚀。

    能够排除小黑点。

    形态学梯度:膨胀图 — 腐蚀图。

    对二值图像进行这一操作,可将图块的边缘突出出来,故可用来保留物体边缘轮廓。

    顶帽:原图 — 开运算结果。

    可以认为是找到那些被开运算排除的小亮点。

    黑帽:闭运算结果 — 原图。 

    可以认为是找到那些被闭运算排除的小黑点。

    为了方便,opencv 将这些操作集合到了一个函数中 morphologyEx。要实现不同操作,仅需改变其第三个成员变量 形态学运算标识符。 

    形态学滤波:morphologyEx 函数

    void morphologyEx(InputArray src, OutputArray dst, int op, InputArray kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar& borderValue = morphologyDefaultBorderValue());
    • src,输入图像,即原图像,填 Mat 类的对象即可。
    • dst,目标图像,需要和原图片有一样的尺寸和类型。
    • op,形态学运算的类型。

    MORPH_ERODE = 0, //腐蚀

    MORPH_DILATE = 1, //膨胀

    MORPH_OPEN = 2, //开操作

    MORPH_CLOSE = 3, //闭操作

    MORPH_GRADIENT = 4, //梯度操作

    MORPH_TOPHAT = 5, //顶帽操作

    MORPH_BLACKHAT = 6, //黑帽操作

    • 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,当边界为常数时的边界值,有默认值,一般不用管。

     

  • 相关阅读:
    vue从详情页回到列表页,停留在之前的tab上
    vue-touch监听手指左滑右滑事件
    vue事件代理
    vue通过ref获取组件渲染后的dom(this.$refs.xxxRef.$el)
    vue水印-第二种方法:通过指令
    # 有时候代码超时
    # 今天的leetcode1268又用上了二分搜索。
    # linux命令小常识
    # 大家好
    今天尝试配置maven的时候
  • 原文地址:https://www.cnblogs.com/bjxqmy/p/12295654.html
Copyright © 2011-2022 走看看