当前位置: 首页 > news >正文

OpenCV:闭运算

目录

1. 简述

2. 用膨胀和腐蚀实现闭运算

2.1 代码示例

2.2 运行结果

3. 闭运算接口

3.1 参数详解

3.2 代码示例

3.3 运行结果

4. 闭运算的应用场景

5. 注意事项


相关阅读

OpenCV:图像的腐蚀与膨胀-CSDN博客

OpenCV:开运算-CSDN博客


1. 简述

简而言之:闭运算 = 膨胀 + 腐蚀

闭运算是一种形态学操作,用于填补前景物体中的小孔洞、连接断裂部分以及平滑前景边缘。
它的操作顺序是:

  1. 膨胀:先扩展前景物体,使前景变大。
  2. 腐蚀:再缩小前景物体,恢复形状。

闭运算的作用可以概括为:

  • 填补前景中的小空隙。
  • 连接相近的前景区域。
  • 平滑边界。

数学表达式为:

A \bullet B = \left ( A \oplus B \right ) \ominus B

其中:

  • A 是输入图像。
  • B 是卷积核。
  • ⊕ 表示膨胀操作。
  • ⊖ 表示腐蚀操作。

2. 用膨胀和腐蚀实现闭运算

2.1 代码示例

import cv2
import numpy as npimage = cv2.imread('D:\\resource\\filter\\q4.jpg')# 卷积核
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))# 膨胀操作
result1 = cv2.dilate(image, kernel, iterations=1)# 腐蚀操作
result2 = cv2.erode(result1, kernel, iterations=1)# 显示原始图像、闭运算(膨胀 + 腐蚀)图像
cv2.imshow('image', image)
cv2.imshow('result2', result2)cv2.waitKey(0)
cv2.destroyAllWindows()

2.2 运行结果

从左到右:

  • 原始黑底白字图像,白字内部带一些黑色的噪点。
  • 图像进行膨胀、腐蚀之后的结果,内部黑色噪点消失。 

3. 闭运算接口

在 OpenCV 中,闭运算由函数 cv2.morphologyEx() 实现,其关键参数如下:

cv2.morphologyEx(src, op, kernel, dst=None, anchor=(-1, -1), iterations=1, borderType=cv2.BORDER_CONSTANT, borderValue=0)

3.1 参数详解

  • src:输入图像。通常是二值化图像或灰度图像。
  • op:操作类型,闭运算的标识符为 cv2.MORPH_CLOSE。
  • kernel:结构元素(卷积核),决定形态学操作的范围和形状。
  • dst:输出图像。默认为 None。
  • anchor:结构元素的锚点,默认为 (-1, -1),即以核的中心为锚点。
  • iterations:操作的迭代次数,默认为 1。
  • borderType:边界模式,定义图像边界的填充方式,常用 cv2.BORDER_CONSTANT。
  • borderValue:边界值,仅在 borderType 为 cv2.BORDER_CONSTANT 时使用。

    常用的参数为前3个:

    cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)

    3.2 代码示例

    import cv2
    import numpy as npimage = cv2.imread('D:\\resource\\filter\\q4.jpg')# 卷积核
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))# 膨胀操作
    #result1 = cv2.dilate(image, kernel, iterations=1)# 腐蚀操作
    #result2 = cv2.erode(result1, kernel, iterations=1)# 闭运算
    result2 = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)# 显示原始图像、闭运算(膨胀 + 腐蚀)图像
    cv2.imshow('image', image)
    cv2.imshow('result2', result2)cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    3.3 运行结果


    4. 闭运算的应用场景

    • 填补前景中的小孔洞:闭运算可以有效填补前景区域中的小空洞,从而使目标更加完整。
    • 连接断裂的前景区域:当前景物体存在细小的断裂区域时,闭运算可以将其连接起来。
    • 平滑前景边界:通过闭运算,前景的边界可以变得更加平滑,去除不必要的凹陷。

    5. 注意事项

    • 核的大小:选择适当的核大小尤为重要,过大或过小的核可能会导致处理效果不佳。
    • 输入图像类型:通常对二值化图像进行闭运算效果更明显。
    • 迭代次数:可以通过调整迭代次数来进一步增强效果。
    http://www.lryc.cn/news/530641.html

    相关文章:

  1. Python | Pytorch | Tensor知识点总结
  2. aws(学习笔记第二十六课) 使用AWS Elastic Beanstalk
  3. 《OpenCV》——图像透视转换
  4. 9 点结构模块(point.rs)
  5. Java线程认识和Object的一些方法ObjectMonitor
  6. 【高等数学】贝塞尔函数
  7. 99.20 金融难点通俗解释:中药配方比喻马科维茨资产组合模型(MPT)
  8. 实现使用K210单片机进行猫脸检测,并在检测到猫脸覆盖屏幕50%以上时执行特定操作
  9. 小程序设计和开发:如何研究同类型小程序的优点和不足。
  10. tiktok 国际版抖抖♬♬ X-Bogus参数算法逆向分析
  11. Redis 基础命令
  12. 深入解析Python机器学习库Scikit-Learn的应用实例
  13. 专业的定制版软件,一键操作,无限使用
  14. 小程序-基础加强
  15. pytorch实现基于Word2Vec的词嵌入
  16. 流媒体娱乐服务平台在AWS上使用Presto作为大数据的交互式查询引擎的具体流程和代码
  17. 鸿蒙 循环控制 简单用法
  18. 四、GPIO中断实现按键功能
  19. Linux安装zookeeper
  20. 【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(二)
  21. 007 JSON Web Token
  22. Windsurf cursor vscode+cline 与Python快速开发指南
  23. 将markdown文件和LaTex公式转为word
  24. grpc 和 http 的区别---二进制vsJSON编码
  25. C#面向对象(封装)
  26. kamailio-kamctl monitor解释
  27. 39. I2C实验
  28. GPIO配置通用输出,推挽输出,开漏输出的作用,以及输出上下拉起到的作用
  29. Spring AOP 入门教程:基础概念与实现
  30. DeepSeek 核心技术全景解析