OpenCV的形态学操作

在计算机视觉中,形态学操作是一种基于集合论的图像处理技术,主要用于分析和处理图像的形状特征。OpenCV 提供了 cv2.morphologyEx() 函数,用于执行多种高级形态学操作。

复制代码
kernel = np.ones((15, 15), np.uint8)

1. 开运算(Opening)

  • 原理:先对图像进行腐蚀操作,再进行膨胀操作。腐蚀会缩小图像中的白色区域,去除小的白色噪点;膨胀会扩大图像中的白色区域,填补小的黑色空洞。因此,开运算主要用于去除小的白色噪点。

  • 应用:去除小的白色噪点,分离连接的物体,平滑较大物体的边界。同时,开运算不会明显改变物体的面积。

  • OpenCV 实现

    复制代码
    result = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

2. 闭运算(Closing)

  • 原理:先对图像进行膨胀操作,再进行腐蚀操作。膨胀会扩大图像中的白色区域,填补小的黑色空洞;腐蚀会缩小图像中的白色区域,去除小的白色噪点。因此,闭运算主要用于填补小的黑色空洞。

  • 应用:填补小的黑色空洞,连接断裂的物体,平滑物体的边界。闭运算不会明显改变物体的面积。

  • OpenCV 实现

    result = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

3. 形态学梯度(Morphological Gradient)

  • 原理:计算膨胀图与腐蚀图之差。该操作可以突出图像中物体的边缘。

  • 应用:边缘检测,突出物体的边界。

  • OpenCV 实现

    result = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

4. 顶帽(Top Hat)

  • 原理:原始图像与开运算结果之差。该操作可以突出图像中比原始图像亮的部分。

  • 应用:突出图像中的小亮区域。

  • OpenCV 实现

    result = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

5. 黑帽(Black Hat)

  • 原理:闭运算结果与原始图像之差。该操作可以突出图像中比原始图像暗的部分。

  • 应用:突出图像中的小暗区域。

  • OpenCV 实现

    result = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)

复制代码

6. 腐蚀(Erosion)

  • 原理:将图像中的白色区域缩小,去除小的白色噪点。

  • OpenCV 实现

    result = cv2.erode(img, kernel)

7. 膨胀(Dilation)

  • :将图像中的白色区域扩大,填补小的黑色空洞。

  • OpenCV 实现

    result = cv2.dilate(img, kernel)

总结

cv2.morphologyEx() 函数是 OpenCV 中用于执行高级形态学操作的函数。通过选择不同的操作类型和结构元素形态,可以实现不同的图像处理效果。在实际应用中,形态学操作常用于去噪、分割、边缘检测等任务。

相关推荐
小张学Python1 分钟前
AI数字人Heygem:口播与唇形同步的福音,无需docker,无需配置环境,一键整合包来了
python·数字人·heygem
跳跳糖炒酸奶6 分钟前
第四章、Isaacsim在GUI中构建机器人(2):组装一个简单的机器人
人工智能·python·算法·ubuntu·机器人
步木木32 分钟前
Anaconda和Pycharm的区别,以及如何选择两者
ide·python·pycharm
星始流年34 分钟前
解决PyInstaller打包PySide6+QML应用的资源文件问题
python·llm·pyspider
南玖yy36 分钟前
Python网络爬虫:从入门到实践
爬虫·python
The Future is mine1 小时前
Python计算经纬度两点之间距离
开发语言·python
九月镇灵将1 小时前
GitPython库快速应用入门
git·python·gitpython
程序员Linc1 小时前
边缘检测技术现状初探2:多尺度与形态学方法
计算机视觉·边缘检测·形态学
兔子的洋葱圈2 小时前
【django】1-2 django项目的请求处理流程(详细)
后端·python·django
独好紫罗兰2 小时前
洛谷题单3-P5719 【深基4.例3】分类平均-python-流程图重构
开发语言·python·算法