使用opencv霍夫變換來嘗試檢測形狀。使用HoughLines方法可以很好地檢測較長的線條,但較短的線條完全被忽略。 有什麼辦法可以檢測較短的線?霍夫變換檢測較短的行
我更感興趣的線路上描述的代碼,如房子等 哪個參數我應該修改要做到這一點與Hough變換的角落?還是有不同的算法,我應該看着
使用opencv霍夫變換來嘗試檢測形狀。使用HoughLines方法可以很好地檢測較長的線條,但較短的線條完全被忽略。 有什麼辦法可以檢測較短的線?霍夫變換檢測較短的行
我更感興趣的線路上描述的代碼,如房子等 哪個參數我應該修改要做到這一點與Hough變換的角落?還是有不同的算法,我應該看着
您提供看的鏈接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)
也要看從坎尼產生的邊緣圖像。您應該只能找到線條存在於邊緣圖像中的線條。
,這裏是線檢測輸出覆蓋在圖像上:
玩弄變量minLineLength
和maxLineGap
以獲得更理想的輸出。這種方法也不會給你HoughLines所做的長線,但看看Canny圖像,也許這些長線不是首選。
你有沒有試過'HoughLinesP()'參數'minLineLength'? –