opencv——morphologyEx开运算、闭运算、形态学梯度、顶帽、黑帽

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

相关文档
最新文档