我正在尝试使用 Python OpenCVcv2.dilate()
函数来弥补图像中的一些空白。请参阅下面的图片。
(1)原始图像的间隙要被封闭。
(2)迭代次数=10的扩张图像
(3)迭代次数=100的扩张图像和应该关闭的假设间隙。
为什么要dilate()
保留这些空白?我错过了一些配置吗?
cv2.dilate(thresh, (3,3), iterations=dilate_interations)
我正在尝试使用 Python OpenCVcv2.dilate()
函数来弥补图像中的一些空白。请参阅下面的图片。
(1)原始图像的间隙要被封闭。
(2)迭代次数=10的扩张图像
(3)迭代次数=100的扩张图像和应该关闭的假设间隙。
为什么要dilate()
保留这些空白?我错过了一些配置吗?
cv2.dilate(thresh, (3,3), iterations=dilate_interations)
您必须调整内核大小,使其在图像的所有部分中至少包含一个非零元素。
这是来自OpenCV 文档:
如果内核下至少有一个像素为“1”,则像素元素为“1”</p>
这意味着如果您的内核太小,您的图像中可能会有一些间隙,这些间隙在任何给定方向上都比内核的大小更宽。请注意,我使用 numpy 生成了内核(我认为您在指定内核时犯了一个错误)。我用 (5,5) 的内核(而不是 (3,3) )测试了您的代码,经过几次迭代,它填补了图像中的所有空白。您指定的(3,3)
被视为大小为 (1,2) 的内核,而不是 3x3 内核:
import numpy as np
kernel = np.ones((5,5),np.uint8)
cv2.dilate(myImage,kernel,iterations = 5)