用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)
结果,线段并不是红色,而是被灰度化了。



