脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - OpenCV黑帽运算(BLACKHAT)的使用

OpenCV黑帽运算(BLACKHAT)的使用

2022-08-08 11:22翟天保Steven Python

本文主要介绍了OpenCV黑帽运算(BLACKHAT)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

原理

形态学是图像处理中常见的名词,图像处理的形态学基本属于数学形态学的范畴,是一门建立在格论和拓扑学基础上的图像分析学科。黑帽运算是结合了腐蚀和膨胀的一种运算,闭运算结果图减原图。

简单来说,黑帽运算就是将闭运算后的图像减去原图,突出了比原图轮廓周围区域更暗的区域。效果图见下方图1图2。

函数原型

?
1
2
3
4
5
6
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() );
其中op=MORPH_BLACKHAT

参数说明

  • InputArray类型的src,输入图像,如Mat类型。
  • OutputArray类型的dst,输出图像。
  • int类型的op,选择不同的运算操作,黑帽运算则是MORPH_BLACKHAT。
  • Point类型的anchor,锚点。默认值(-1,-1),表示位于单位中心,一般不用。
  • int类型的iterations,迭代使用的次数,默认值为1。
  • int类型的borderType,推断图像外部像素的边界模式,我OpenCV版本的默认值为BORDER_CONSTANT。如果图像边界需要扩展,则不同的模式下所扩展的像素,其生成原则不同。
  • const Scalar&类型的borderValue,当边界为常数时的边界值,默认值为morphologyDefaultBorderValue()。

测试代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
#include<opencv2/opencv.hpp>
#include<ctime>
using namespace std;
using namespace cv;
int main(void)
{
    cv::Mat test = cv::Mat::zeros(64, 64, CV_8UC1);
    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 result, close;
    cv::morphologyEx(test, close, MORPH_CLOSE, element);
    cv::morphologyEx(test, result, MORPH_BLACKHAT, element);
 
    imshow("original", test);
    imshow("close", close);
    imshow("result", result);
    waitKey(0);
 
    system("pause");
    return 0;
}

测试效果

OpenCV黑帽运算(BLACKHAT)的使用

OpenCV黑帽运算(BLACKHAT)的使用

OpenCV黑帽运算(BLACKHAT)的使用

如上图所示,有原先8*8的矩形,有一个2*2的凹处,我设置了3*3的矩形蒙版,对其进行闭运算操作如图2所示,凹进消失,对其进行黑帽操作如图3所示,突出了凹进的内容。

到此这篇关于OpenCV黑帽运算(BLACKHAT)的使用的文章就介绍到这了,更多相关OpenCV黑帽运算内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/zhaitianbao/article/details/117214281

延伸 · 阅读

精彩推荐
  • PythonOpenCV+Python几何变换的实现示例

    OpenCV+Python几何变换的实现示例

    这篇文章主要介绍了OpenCV+Python几何变换的实现示例,图像的几何变换是指将一幅图像映射到另一幅图像内。有缩放、翻转、仿射变换、透视、重映射等操作...

    雨吹桐6292021-09-23
  • PythonPython实现截屏的函数

    Python实现截屏的函数

    这篇文章主要介绍了Python实现截屏的函数,可实现Python针对屏幕的截屏功能,非常简单实用,需要的朋友可以参考下...

    Sephiroth4462020-07-27
  • Pythonpython 绘制斜率图进行对比分析

    python 绘制斜率图进行对比分析

    这篇文章主要介绍了python 绘制斜率图进行对比分析的实例,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...

    代码医生工作室7592021-09-25
  • PythonPython中MySQL数据迁移到MongoDB脚本的方法

    Python中MySQL数据迁移到MongoDB脚本的方法

    MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。本文给大家介绍Python中MySQL数据迁移到Mo...

    韩德田7452020-08-21
  • PythonPython进阶之全面解读高级特性之切片

    Python进阶之全面解读高级特性之切片

    切片的作用就是截取序列对象,然而,对于非序列对象,我们是否有办法做到切片操作呢?在使用切片的过程中,有什么要点值得重视,又有什么底层原理...

    豌豆花下猫10472021-05-30
  • PythonPython 用Redis简单实现分布式爬虫的方法

    Python 用Redis简单实现分布式爬虫的方法

    本篇文章主要介绍了Python 用Redis简单实现分布式爬虫的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    zhou_19975842020-12-20
  • Pythonpython微信公众号之关键词自动回复

    python微信公众号之关键词自动回复

    这篇文章主要为大家详细介绍了python微信公众号之关键词自动回复,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    张治杰7302021-03-05
  • PythonPython中的面向对象编程详解(上)

    Python中的面向对象编程详解(上)

    这篇文章主要介绍了Python中的面向对象编程详解(上),本文讲解了创建类、实例化类、类属性、特殊方法内建属性、静态变量属性、实例变量属性、方法属性...

    Python教程网6502020-06-04