opencv中的腐蚀与膨胀(转)

Posted 张酱油。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv中的腐蚀与膨胀(转)相关的知识,希望对你有一定的参考价值。

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

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:腐蚀操作的内核。 如果不指定,默认为一个简单的 技术分享 矩阵。否则,我们就要明确指定它的形状,可以使用函数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_CROSS和MORPH_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 );

以上是关于opencv中的腐蚀与膨胀(转)的主要内容,如果未能解决你的问题,请参考以下文章

08 OpenCV腐蚀膨胀与形态学运算

OpenCV2:大学篇 形态学技术-腐蚀与膨胀操作

python+opencv图像形态学处理详细解释(膨胀腐蚀开闭运算礼帽和黑猫)

Python图像处理丨图像腐蚀与图像膨胀

图像的膨胀与腐蚀——OpenCV与C++的具体实现

OpenCV图像处理篇之腐蚀与膨胀