2015-11-05 82 views
1

我想在python中使用opencv在图像中找到霍夫线。在OpenCV/Python中的霍夫线

我的代码是:

import cv2 
import numpy as np 

img = cv2.imread('DLMIA.png') 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 


edges = cv2.Canny(gray,100,200,apertureSize = 3) 
cv2.imshow('edges',edges) 
cv2.waitKey(0) 

minLineLength = 30 
maxLineGap = 10 
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap) 
for x1,y1,x2,y2 in lines[0]: 
    cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2) 

cv2.imshow('hough',img) 
cv2.waitKey(0) 

我使用的图片this

我的结果图像是this

我的代码示例取自here

结果图像与上一个链接中提到的不一样。请帮忙吗?

回答

10

我找到了解决方案。

该代码示例仅显示第一行hough行。

如果您想要在图像上打印所有的虚线,则必须打印所有行。

这是纠正代码:

import cv2 
import numpy as np 

img = cv2.imread('dave.jpg') 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 


edges = cv2.Canny(gray,100,200,apertureSize = 3) 
cv2.imshow('edges',edges) 
cv2.waitKey(0) 

minLineLength = 30 
maxLineGap = 10 
lines = cv2.HoughLinesP(edges,1,np.pi/180,15,minLineLength,maxLineGap) 
for x in range(0, len(lines)): 
    for x1,y1,x2,y2 in lines[x]: 
     cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2) 

cv2.imshow('hough',img) 
cv2.waitKey(0) 
0

多一点优雅的解决办法是使用 for line in lines: for x1,y1,x2,y2 in line: ...

+1

这实在是对公认的答案和注释不阿斯卡的响应。何时可以在达到所需声望级别时留下这些评论。 – trincot