OpenCV形态学变换详解:开运算、闭运算与梯度运算

洛溪
洛溪
发布时间:2026-10-14| 2人浏览过
原创

本文深入解析OpenCV中的形态学变换,涵盖开运算、闭运算及梯度运算的核心原理。通过cv2.morphologyEx()函数,结合腐蚀与膨胀操作,演示如何去除图像噪声、填补孔洞及提取边缘。附带Python代码示例与卷积核选择建议,帮助开发者掌握图像预处理关键技术。

OpenCV形态学变换概述

在形态学图像处理中,腐蚀和膨胀是最基础的两个操作。在此基础上衍生出的其他组合操作统称为形态学变换。OpenCV提供了专门的函数模块cv2.morphologyEx()来实现这些功能,其中morphology即指形态学。本文将结合Python与OpenCV库,详细讲解相关应用方法。

开运算原理与实现

开运算

开运算的基本流程是对图像先执行腐蚀操作,随后对腐蚀后的结果进行膨胀处理。这种操作通常用于去除图像中的小型噪声点或断开细小的连接。



在OpenCV中,通过调用morphologyEx函数实现开运算。具体语法为:运算结果=cv2.morphologyEx(源图像img, cv2.MORPH_OPEN, 卷积核k)。其中,cv2.MORPH_OPEN参数指定执行开运算操作。


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

闭运算原理与实现

闭运算

闭运算的执行顺序与开运算相反,即先对图像进行膨胀操作,接着再进行腐蚀处理。该操作的主要作用是填充前景物体内部的小孔或小黑点,使物体轮廓更加完整。


实现闭运算的代码调用方式为:运算结果=cv2.morphologyEx(源图像img, cv2.MORPH_CLOSE, 卷积核k)。参数cv2.MORPH_CLOSE用于指定执行闭运算。

在实际应用中,合理选择卷积核的大小至关重要。如果卷积核尺寸过小,可能无法有效去除前景图像中的黑点噪声,导致处理效果不佳。


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

梯度运算原理与实现

梯度运算

梯度运算主要针对二值图像,分别对其执行膨胀和腐蚀操作。最终结果通过膨胀图像减去腐蚀图像获得(像素级相减)。具体逻辑为:0-0=0,1-1=0,而1-0=1,从而突出图像的边缘部分。


OpenCV中梯度运算的实现代码为:运算结果=cv2.morphologyEx(源图像img, cv2.MORPH_GRADIENT, 卷积核k)。注意,此处参数cv2.MORPH_GRADIENT用于指定梯度运算(原文注:此处原文标注为闭运算属笔误,实际应为梯度运算标识)。


import cv2
import numpy as np
o=cv2.imread("gradient.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r=cv2.morphologyEx(o,cv2.MORPH_GRADIENT,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 算法库。