首页 > 解决方案 > 如何检测线条 - OpenCV

问题描述

我是 OpenCV 的新手,并试图以与检测到轮廓相同的格式检测图形中的线条。例如,需要处理以下图像: 原始图像

到目前为止,我已经能够如下检测轮廓: 检测到的轮廓

我想做的是检测实际线而不是内部和外部轮廓,但仍然以列表的形式获得结果。这可能吗?如果是这样,我想将此应用于具有多条线的图片,例如: 多线绘图

所有图纸将仅由线条组成,没有实体“块”

非常感谢!

标签: pythonopencvlinedetection

解决方案


img = cv2.imread('image.png', cv2.IMREAD_COLOR) 

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 200)
lines = cv2.HoughLinesP(edges, 1, np.pi/180, threshold=0)
for line in lines:
    x1, y1, x2, y2 = line[0]
    cv2.line(img, (x1, y1), (x2, y2), (51, 250, 250), 2)
cv2.imshow(img)

推荐阅读