3

使用opencv霍夫變換來嘗試檢測形狀。使用HoughLines方法可以很好地檢測較長的線條,但較短的線條完全被忽略。 有什麼辦法可以檢測較短的線?霍夫變換檢測較短的行

我使用這個頁面 http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html

我更感興趣的線路上描述的代碼,如房子等 哪個參數我應該修改要做到這一點與Hough變換的角落?還是有不同的算法,我應該看着

Hough transform with OpenCV python tutorial

+0

你有沒有試過'HoughLinesP()'參數'minLineLength'? –

回答

3

您提供看的鏈接HoughLinesP

import cv2 
import numpy as np 

img = cv2.imread('beach.jpg') 
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
edges = cv2.Canny(gray, 50, 150, apertureSize=3) 
minLineLength = 100 
maxLineGap = 5 
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 50, minLineLength, maxLineGap) 
for x1, y1, x2, y2 in lines[0]: 
    cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 2) 
cv2.imwrite('canny5.jpg', edges) 
cv2.imwrite('houghlines5.jpg', img) 

也要看從坎尼產生的邊緣圖像。您應該只能找到線條存在於邊緣圖像中的線條。

enter image description here

,這裏是線檢測輸出覆蓋在圖像上: enter image description here

玩弄變量minLineLengthmaxLineGap以獲得更理想的輸出。這種方法也不會給你HoughLines所做的長線,但看看Canny圖像,也許這些長線不是首選。

+0

感謝您的提示,您能提供您用作圖像中這兩個參數的值嗎? – Pita

+0

@Pita您在我發佈的代碼中看到的值是生成上面圖片的值。回想一下,這只是綠線,因爲我沒有原始圖像。 – Scott