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 中用于执行高级形态学操作的函数。通过选择不同的操作类型和结构元素形态,可以实现不同的图像处理效果。在实际应用中,形态学操作常用于去噪、分割、边缘检测等任务。

相关推荐
2601_962299885 分钟前
Linux下运行Python脚本
linux·python·ubuntu·脚本·命令
IT毕设实战小研5 分钟前
基于大数据的DAX40成分股金融新闻情感趋势可视化分析
android·大数据·python·考研·金融·课程设计
三十岁老牛再出发11 分钟前
8月27日总结
python·pandas
砚底藏山河11 分钟前
【量化纯GET实战 #21】用 pandas 做分析:把接口数据变成 DataFrame
java·python·金融·maven·pandas
Carl_奕然26 分钟前
【智能体】Agent的四种设计模式之:React(2026最新版)
javascript·人工智能·python·react.js·设计模式·语言模型
岁月宁静28 分钟前
四、《从零手撸 Agent》 — 流式输出:接住 AI “一个字一个字” 想出来的过程
python·agent
是吕先森31 分钟前
【python】selenium实现web自动化测试
前端·python·selenium
卷无止境39 分钟前
从脚本到程序:Windows平台上的Python打包全景图
后端·python
my059239 分钟前
市场学习,不止看资讯,数据查阅与思维练习同样重要
python·学习
黑科技工坊41 分钟前
2026年口碑载道:铝面板定制供应商优选指南
大数据·人工智能·python