OpenCV dilate()函数不能在所有方向上缩小差距

时间:2019-04-30 13:29:56

标签: python opencv image-processing image-morphology

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

(1)带有空白的原始图像。

enter image description here

(2)具有 iterations = 10

的膨胀图像

enter image description here

(3)膨胀的图像,具有 iterations = 100 和应该弥补的空白。

enter image description here

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

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

1 个答案:

答案 0 :(得分:1)

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

这来自OpenCV documentation

  

如果内核下至少一个像素为“ 1”,则像素元素为“ 1”

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