Python OpenCV如何去除行间的space

Python OpenCV how to remove space between lines

我有这张图片:

我的目标是将 L 形分成两个不同的矩形(这两个矩形共同构成了 L 形)。对于长矩形没有问题,因为它被检测为轮廓。但是对于更宽的矩形,这是一个问题,因为两条线之间有一个 space。这个问题有解决办法吗?

我还没有为它写任何代码,所以我不能post任何东西

提前致谢

如果只想使用基于轮廓的方法,则可以尝试腐蚀。 对图像应用侵蚀并使用适当的参数,您可以以增加线条粗细为代价来缩小间距,但我认为这对您的情况没问题,因为您仅依赖轮廓提取。 试试这个:

kernel = np.ones((7,7), np.uint8)
eroded_im = cv2.erode(im, kernel, iterations=5 or 6)

每当使用 OpenCV 执行图像处理时,您都希望将所需的操作对象显示为白色,背景为黑色。在这种情况下,由于要修改线条,因此首先需要将图像反转,使线条为白色,背景为黑色。从这里,我们可以构造一个水平内核并执行形态学闭合以将线连接在一起。同样,如果您想关闭垂直线之间的空间,您可以使用垂直内核执行相同的步骤。

结果

代码

import cv2

image = 255 - cv2.imread('1.png', 0)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (60,1))
result = 255 - cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel, iterations=1)

cv2.imshow('result', result)
cv2.waitKey()