Python OpenCV如何删除行之间的空间

时间:2019-10-18 11:57:14

标签: python opencv image-processing line contour

我有这张图片:

enter image description here

我的目标是将L形分隔为两个不同的矩形(两个一起构成L形)。对于长矩形没有问题,因为它被检测为轮廓。但是对于较宽的矩形,这是一个问题,因为两行之间有一个空格。有解决办法吗?

我还没有为此编写任何代码,所以我什么都不能张贴

预先感谢

2 个答案:

答案 0 :(得分:2)

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

结果

enter image description here

代码

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()

答案 1 :(得分:-2)

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

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