OpenCV dilate() 函数没有缩小所有方向的间隙

OpenCV dilate() function not closing the gaps in all directions

我正在尝试使用 Python OpenCV cv2.dilate() 函数来缩小图像中的一些空白。见下图。

(1)原始图像,间隙要被关闭。

(2) 膨胀图像 iterations=10

(3) 膨胀图像 iterations=100 和应该关闭的假定间隙。

为什么 dilate() 保持这些差距?我是否缺少某些配置?

cv2.dilate(thresh, (3,3), iterations=dilate_interations)

您必须调整内核大小,使其在图像的所有部分至少包含一个非零元素。

这是来自 OpenCV documentation:

a pixel element is ‘1’ if at least one pixel under the kernel is ‘1’

这意味着如果您的内核太小,您的图像中可能会出现一些间隙,这些间隙在任何给定方向上都比内核的大小宽。请注意,我使用 numpy 生成了内核(我认为您在指定内核时犯了一个错误)。我用 (5,5) 的内核(而不是 (3,3) )测试了您的代码,经过几次迭代后,它关闭了图像中的所有间隙。您指定的 (3,3) 被视为大小为 (1,2) 的内核,而不是大小为 1 的 3x3 内核:

import numpy as np

kernel = np.ones((5,5),np.uint8)

cv2.dilate(myImage,kernel,iterations = 5)