首页 > 代码库 > opencv2函数学习之erode、dilate:图像腐蚀和膨胀
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=http://www.mamicode.com/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=http://www.mamicode.com/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 );
——
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。