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

(1)带有要缩小的间隙的原始图像。

python - OpenCV dilate()函数无法在所有方向上缩小差距-LMLPHP

(2)具有迭代次数= 10 的扩张图像

python - OpenCV dilate()函数无法在所有方向上缩小差距-LMLPHP

(3)扩张图像,其迭代次数= 100 ,并假定应该弥补的差距。

python - OpenCV dilate()函数无法在所有方向上缩小差距-LMLPHP

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

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

最佳答案

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

这是从OpenCV documentation:



这意味着如果内核太小,则图像中可能会存在一些间隙,该间隙会沿任意给定方向大于内核的大小。请注意,我使用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)

关于python - OpenCV dilate()函数无法在所有方向上缩小差距,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55922030/

10-13 03:35