2015-11-05 87 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