您的位置首页百科问答

用python-opencv来检测图片中的线段

用python-opencv来检测图片中的线段

的有关信息介绍如下:

用python-opencv来检测图片中的线段

在《使用opencv-python来检测图片中的直线的步骤》一文中,我们使用python-opencv里面的hough变换,检测了图片中的直线。

但是,实际上,图中没有直线,只有线段。而如果我们想要检测出线段,就必须检测线段的端点。

本文,就来检测线段。用到的图片,还是那幅图片。

前面的基本方法都一样,把图片变成灰度图,再进行边界检测。

上面的代码,把图片保存到本地了。

检测线段的端点,用到了

ls = cv2.HoughLinesP(edges,1,np.pi/180,30,

minLineLength=60,maxLineGap=10)

l = lines[:,0,:]

print(l)

运行结果是,返回线段的端点坐标。

在原图中,标注出所有的线段。

for x1,y1,x2,y2 in l[:]:

cv2.line(img,(x1,y1),(x2,y2),(0,0,255),1)

加粗线段:

for x1,y1,x2,y2 in l[:]:

cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)

发现什么了?右面的不是线段的图形,也被当成线段对待了。

在灰度图里面会怎么样呢?

for x1,y1,x2,y2 in l[:]:

cv2.line(gray,(x1,y1),(x2,y2),(0,0,255),2)

结果,线段并不是红色,而是被灰度化了。