• opencv2函数学习之erode、dilate:图像腐蚀和膨胀


    图像腐蚀和图像膨胀是图像中两种最基本形态学操作。

    void erode( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT,
    const Scalar& borderValue=morphologyDefaultBorderValue() );
    void dilate( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT,
    const Scalar& borderValue=morphologyDefaultBorderValue() );

    可见,腐蚀和膨胀的参数完全一样。

    参数:

    src:原图像。

    dst:目标图像。

    element:腐蚀操作的内核。 如果不指定,默认为一个简单的 3x3 矩阵。否则,我们就要明确指定它的形状,可以使用函数getStructuringElement().

    anchor:默认为Point(-1,-1),内核中心点。省略时为默认值。

    iterations:腐蚀次数。省略时为默认值1。

    borderType:推断边缘类型,具体参见borderInterpolate函数。默认为BORDER_DEFAULT,省略时为默认值。

    borderValue:边缘值,具体可参见createMorphoogyFilter函数。可省略。

    通常情况下,我们可以使用函数getStructuringElement()来制作操作内核。

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

    参数:

    shape:内核形状,主要有MORPH_RECT,MORPH_CROSSMORPH_ELLIPSE,分别为矩形、椭圆形和交叉形,对应的值分别为0,1,2

      

    enum { MORPH_RECT=0, MORPH_CROSS=1, MORPH_ELLIPSE=2 };

    esize:内核大小。

    anchor:内核锚点,默认为内核中心点。

    例:

    Mat element = getStructuringElement( 0,Size( 2*i + 1, 2*i+1 ), Point(i, i ) );
    
      /// 腐蚀操作
      erode( src, dst, element );
    Mat element = getStructuringElement( 0,Size( 2*i + 1, 2*i+1 ), Point(i, i ) );
    
      /// 膨胀操作
      dilate( src, dst, element );

    ——

  • 相关阅读:
    shell脚本杀掉指定进程下所有子进程(包括子进程的子进程)
    XDebug调试
    PHP基础入门
    猴子补丁(Monkey Patching)
    编写python高质量python代码的59个有效方法
    ubuntu中不能使用终端的情况
    一些个人有用的网站
    Ubuntu将自带的python3升级
    [Vue warn]: You may have an infinite update loop in a component render function.
    OO第四单元总结&期末总结
  • 原文地址:https://www.cnblogs.com/denny402/p/3848390.html
Copyright © 2020-2023  润新知