本文主要介绍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黑帽的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!