我正在尝试使用Python OpenCV cv2.dilate()
函数来缩小图像中的一些间隙。请参见下面的图像。
(1)带有要缩小的间隙的原始图像。
(2)具有迭代次数= 10 的扩张图像
(3)扩张图像,其迭代次数= 100 ,并假定应该弥补的差距。
为什么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/