OpenCV黑帽运算(BLACKHAT)的使用

OpenCV黑帽运算(BLACKHAT)的使用

本文主要介绍OpenCV BLACKHAT的使用,通过示例代码非常详细的介绍。对大家的学习或工作都有一定的参考价值。有需要的朋友就跟着下面的边肖学习吧。

目录

原理功能原型测试代码

原理

形态学是图像处理中的常用术语,图像处理的形态学基本属于数学形态学的范畴,是一门基于格论和拓扑学的图像分析学科。黑帽操作是一种腐蚀和膨胀相结合的操作,封闭的操作结果图缩小了原图。

简单来说,黑帽操作就是从封闭图像中减去原图像,突出比原图像轮廓周围区域更暗的区域。效果见下图1和图2。

函数原型

void morphologyEx(输入阵列src,输出阵列dst,

int op,InputArray内核

点锚=点(-1,-1),int迭代次数=1,

int borderType=BORDER_CONSTANT,

const标量border value=morphologyDefaultBorderValue());

Op=MORPH_BLACKHAT

参数描述

输入Src类型,输入image,如Mat类型。数组类型的输出dst,输出图像。int类型的Op,选择不同的运算,黑帽运算是MORPH_BLACKHAT。类型点的锚点,锚点。默认值(-1,-1)表示位于公司中心,一般不使用。int类型的迭代次数,使用的迭代次数,默认值为1。Int type borderType,推断图像外部像素的边界模式。我的OpenCV版本的默认值是BORDER_CONSTANT。如果需要对图像边界进行扩展,不同模式下的扩展像素有不同的生成原理。常数标量类型的BorderValue,它是边界为常数时的边界值。默认值为morphologyDefaultBorderValue()。

测试代码

#includeiostream

# includeopenv2/opencv . HPP

# includectime

使用命名空间std

使用名称空间cv;

int main(void)

{

cv:Mat test=cv:Mat:zeros(64,64,CV _ 8uc 1);

cv:rectangle(test,cv:Rect(30,30,8,8),255,-1);

cv:rectangle(test,cv:Rect(33,30,2,2),0,-1);

cv:Mat element=getStructuringElement(MORPH _ RECT,Size(3,3));

cv:Mat结果,关闭;

cv:morphologyEx(测试,关闭,变形_关闭,元素);

cv:morphologyEx(测试,结果,MORPH_BLACKHAT,元素);

imshow(原始,测试);

imshow(close ,关闭);

imshow(result ,结果);

wait key(0);

系统(“暂停”);

返回0;

}

测试效果

如上图所示,原来有一个8*8的长方形,有一个2*2的凹槽。我设置了一个3*3的矩形蒙版,如图2所示关闭,凹陷消失,如图3所示黑色封顶,突出凹陷的内容。

关于OpenCV BLACKHAT使用的这篇文章到此为止。有关OpenCV黑帽的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

OpenCV黑帽运算(BLACKHAT)的使用