OpenCV图像礼帽与黑帽运算详解:原理、代码与实现

陆遥
陆遥
发布时间:2026-10-14| 5人浏览过
原创

本文详细介绍OpenCV中图像礼帽(Top Hat)与黑帽(Black Hat)的实现方法。礼帽通过开运算提取噪声,黑帽通过闭运算填充孔洞。文章提供基于morphologyEx函数的Python代码示例及卷积核配置,适用于二值图像处理。

OpenCV图像礼帽与黑帽运算详解

Python结合OpenCV库

图像礼帽处理原理与实现

图像礼帽处理

图像礼帽,亦称为图像顶帽(Top Hat)。其计算逻辑为:原始图像减去开运算后的图像。该操作主要用于提取图像中的噪声成分。开运算的定义是先进行腐蚀操作,随后进行膨胀操作。

适用对象主要为二值图像。


具体实现需调用morphologyEx函数,并指定参数cv2.MORPH_TOPHAT。调用格式为:结果图像=cv2.morphologyEx(原始图像, cv2.MORPH_TOPHAT, 卷积核)。其中,卷积核可通过代码生成,例如使用np.ones((10,10), np.uint8)构建一个10x10的全1矩阵作为卷积核示例。


import cv2
import numpy as np
o=cv2.imread("tophat.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r=cv2.morphologyEx(o,cv2.MORPH_TOPHAT,k)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()

图像黑帽处理原理与实现

图像黑帽处理

黑帽图像的计算公式为:闭运算后的图像减去原始图像。该操作旨在获取图像内部的小孔或前景色中的小黑点。闭运算的过程是先对图像进行膨胀,再进行腐蚀,有助于关闭前景物体上的小孔或填充小黑点。此方法同样适用于二值图像。


实现方式同样依赖morphologyEx函数,需指定参数cv2.MORPH_BLACKHAT。调用格式为:结果图像=cv2.morphologyEx(原始图像, cv2.MORPH_BLACKHAT, 卷积核)。卷积核示例与礼帽相同,可使用np.ones((10,10), np.uint8)构建。


import cv2
import numpy as np
o=cv2.imread("blackhat.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r=cv2.morphologyEx(o,cv2.MORPH_BLACKHAT,k)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()


至此,关于OpenCV图像礼帽和黑帽的实现介绍完毕。如需了解更多相关OpenCV图像礼帽和黑帽内容,建议搜索本站历史文章或继续阅读后续相关文章,感谢支持。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。