【问题标题】:OpenCV dilate() function not closing the gaps in all directionsOpenCV dilate() 函数没有关闭所有方向的间隙
【发布时间】:2019-04-30 13:29:55
【问题描述】:

我正在尝试使用 Python OpenCV cv2.dilate() 函数来弥补图像中的一些空白。请参阅下面的图片。

(1) 原始图像,需要填补的空白。

(2) iterations=10

的放大图像

(3) iterations=100 的放大图像和应该闭合的假定间隙。

为什么dilate() 保留这些空白?我是否缺少一些配置?

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

【问题讨论】:

    标签: python opencv image-processing image-morphology


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      相关资源
      最近更新 更多