title: 高级的形态学变换.md
toc: true
date: 2021-12-22 09:25:00


高级的形态学变换

morphologyEx()函数

利用基本的膨胀和腐蚀技术,来执行更加高级的形态学变换,

比如开环运算、形态学梯度,顶帽运算和黑帽运算等。下面为morphologyEx()函数原型

void cv::morphologyEx( InputArray src, OutputArray dst, int op, InputArray kernel, Pointanchor = Point(-1,-1),

int iterations = 1, int borderType = BORDER_CONSTANT, constScalar& borderValue =

morphologyDefaultBorderValue);

第一个参数,InputArray类型的src,输入图像,即原图像,填Mat类的对象即可。

第二个参数,OutputArray类型的dst,函数的输出对象。

第三个参数,int类型的op(operation),表示形态学运算的类型,可以是如下之一的标识符:

MORPH_OPEN - 开运算 - CV_MOP_OPEN

MORPH_CLOSE - 闭运算 - CV_MOP_CLOSE

MORPH_GRADIENT - 形态学梯度 - CV_MOR_GRADIENT

MORPH_TOPHAT - 顶帽运算 - CV_MOP_TOPHAT

MORPH_BLACKHAT - 黑帽运算 - CV_MOP_BLACKHAT

第四个参数,InputArray类型的kernel,形态学运算内核。若为NULL时,表示的是使用参考点位于

中心3x3的核。我们一般使用函数getStructuringElement配合这参数的使用。getStructuringElement

函数会返回指定形状和尺寸的结构元素(内核矩阵)。