首页 > 解决方案 > OpenCV erode 选择什么内核?

问题描述

我试图侵蚀我的形象:
在此处输入图像描述

为了得到接近这个(我的目标)的东西:
在此处输入图像描述

我使用这个 OpenCV 的基本内核

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
image_1 = cv2.erode(gray_overlay, kernel, iterations=1)

我知道有定制的内核,我尝试过不同重量、不同大小的内核,但我无法得到令人满意的结果(在不损失太多白色表面的情况下分离正方形)

有人可以就内核给我建议吗?

谢谢!:)

标签: pythonopencvimage-processingkernel

解决方案


如果你不关心盒子的具体形状,只关心它们之间的间隙,你应该尝试形态开口而不是只应用侵蚀。

试试这个:

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)

推荐阅读