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()
我有这张图片:
我的目标是将 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()