python - OpenCV erode 选择什么内核?
问题描述
我使用这个 OpenCV 的基本内核
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
image_1 = cv2.erode(gray_overlay, kernel, iterations=1)
我知道有定制的内核,我尝试过不同重量、不同大小的内核,但我无法得到令人满意的结果(在不损失太多白色表面的情况下分离正方形)
有人可以就内核给我建议吗?
谢谢!:)
解决方案
如果你不关心盒子的具体形状,只关心它们之间的间隙,你应该尝试形态开口而不是只应用侵蚀。
试试这个:
import cv2 as cv
image = cv.imread("image.png")
kernel = np.ones((9, 9), np.uint8)
eroded_image = cv.erode(image, kernel, iterations = 2)
dilated_image = cv.dilate(eroded_image, kernel, iterations = 2)
您可以调整内核的大小和迭代次数来操纵最终输出。
您还可以使用:
cv.morphologyEx(image, cv.MORPH_OPEN, kernel)
推荐阅读
- oracle - 从 PROCEDURE BY SELECT 返回 REF CURSOR
- javascript - Reacts useEffects 详尽的 deps 仅触发创建组件将卸载功能
- python - 使用 matplotlib 在 3d 表面上绘制相交的 2d 平面
- javascript - 在 redux-saga 中获取数据后如何在组件中调用渲染?
- typescript - 自定义属性名称
- jquery - jquery按单元格中的列基础内容对表格进行排序
- shibboleth - shibsp::ConfigurationException,为什么服务提供商没有记录任何附加信息?
- log4j2 - 以编程方式更改日志级别
- php - 未捕获的 mysqli_sql_exception:您的 SQL 语法有错误
- react-native - 屏幕没有在 react-navigation-tabs toptabnavigator 的第二个选项卡中向上移动