我如何解决从图像中识别和提取矩形的问题,如下图所示.
请注意,我的矩形可能不完整,并且缺少一些边,而某些边可能是部分线.
谢谢 !

解决方法:
可以使用morphological操作(例如eroding and dilating)来解决.这两个操作将有助于创建闭合的矩形.
之后,您可以使用page中的教程来检测简单的形状,例如矩形.
我实现了一个快速演示,该演示适用于您提供的图像.
main.py:
import cv2
import numpy as np
from shapeDetector import ShapeDetector
import imutils
img = cv2.imread('t.png')
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 10)
dilate = cv2.dilate(erosion,kernel,iterations = 10)
腐蚀会使所有线条变粗,因此要恢复正常宽度,我们需要在腐蚀后进行扩张.我建议对扩张操作进行一次评论,以了解侵蚀的工作原理,反之亦然.
此操作将像这样改变您的图像
我使用的检测算法期望在黑色背景上出现白线.
这就是为什么我们需要反转图像.
cv2.bitwise_not ( dilate, dilate )
之后,我们可以使用教程中的代码.
image = dilate
resized = i

本文介绍了如何使用OpenCV处理可能存在缺失边的矩形检测问题。通过腐蚀和膨胀等形态学操作封闭矩形,然后反转图像并进行阈值处理,最后使用ShapeDetector类识别图像中的形状,从而在不完整的矩形上实现检测。
最低0.47元/天 解锁文章
992

被折叠的 条评论
为什么被折叠?



