11. 形态学--膨胀、腐蚀、开闭运算、梯度、顶帽、黑帽
2022/6/26 23:27:32
本文主要是介绍11. 形态学--膨胀、腐蚀、开闭运算、梯度、顶帽、黑帽,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 形态学-腐蚀
腐蚀是元素全为1的卷积核
方法:
erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
- iterations是腐蚀操作的迭代次数,次数越多,腐蚀操作执行的次数越多,腐蚀效果越明显
import cv2 import numpy as np img = cv2.imread('./msb.png') kernel = np.ones((3, 3), np.uint8) dst = cv2.erode(img, kernel, iterations=2) cv2.imshow('img', np.hstack(img, dst)) cv2.waitKey(0) cv2.destroyAllWindows()
2. 形态学-膨胀
dilate(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
# 使用cv2提供的函数获取形态学卷积核:MORPH_RECT,CROSS,ELLIPSE等 kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5)) # 膨胀卷积核选择类型 # 膨胀操作 dst = cv2.dilate(img, kernel) cv2.imshow('img', np.hstack(img, dst))
3. 获取形态学卷积核
cv提供了获取卷积核的API,不需要我们手动创建卷积核
getStructuringElement(shape, ksize[, anchor])
- shape是指卷积核的形状,注意不是指长宽,是指卷积核中1形成的形状
(1) MORPH_RECT 卷积核中的1是矩形,常用;
(2) MORPH_MORPH_ELLIPSE 椭圆
(3) MORPH_CROSS 十字
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5)) # 在使用腐蚀或膨胀的时候,作为卷积核使用 cv2.erode(img, kernel, iterations=2)
4. 开运算
- 开运算和闭运算都是腐蚀和膨胀的基本应用
- 开运算 = 腐蚀 + 膨胀
morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.MORPH_OPEN 表示形态学的开运算
kernel 如果噪声点比较多,会选择大一点的kernel,如果噪声点比较小,可以选择小一点的kernel
5. 闭运算
morphologyEx(img, cv2.MORPH_CLOSE, kernel)
6. 形态学-梯度
- 梯度 = 原图 - 腐蚀
- 腐蚀之后原图边缘变小了,原图 - 腐蚀 就可以得到腐蚀掉的部分,即边缘
morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
# 注意调节kernel大小以获得更清晰的边缘 kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) dst = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel, iterations=1)
7. 顶帽操作
- 顶帽 = 原图 - 开运算
- 开运算的效果是去除图像外的噪点,原图 - 开运算就得到了去掉的噪点
morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
8. 黑帽操作
- 顶帽 = 原图 - 闭运算
- 闭运算的效果是去除图像内的噪点,原图 - 开运算就是图形内部的噪点
morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
这篇关于11. 形态学--膨胀、腐蚀、开闭运算、梯度、顶帽、黑帽的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?