Python 和 OpenCV - 霍夫线变换中的主导线
Python and OpenCV - Dominant Line in Hough Line transform
对于我的程序,使用 OpenCV 和 Python,我正在尝试检测道路车道。为了做到这一点,我使用了 Hough Line Transform 来检测线条。但是,它发现许多线彼此相邻,我正在尝试找到一种方法来制作一条位于所有其他线之间的平均线。提示?
这是我的代码:
import numpy as np
import cv2
cap = cv2.VideoCapture('CVfootage.mov')
while(True):
ret, frame = cap.read()
frame = frame[200:720, 0:1280]
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray,(7,7),0)
edges = cv2.Canny(blur, 50, 150)
lines = cv2.HoughLinesP(image=edges,rho=1,theta=np.pi/180, threshold=100,lines=np.array([]), minLineLength=100,maxLineGap=80)
a,b,c = lines.shape
for i in range(a):
cv2.line(blur, (lines[i][0][0], lines[i][0][1]), (lines[i][0][2], lines[i][0][3]), (0, 0, 255), 3, cv2.LINE_AA)
cv2.imshow('edges', edges)
cv2.imshow('hough', blur)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
您需要调整houghlinesP函数的参数
如果您想要减少彼此相邻的行数:增加 'rho'
如果您总体上想要更少的行:增加阈值
对于我的程序,使用 OpenCV 和 Python,我正在尝试检测道路车道。为了做到这一点,我使用了 Hough Line Transform 来检测线条。但是,它发现许多线彼此相邻,我正在尝试找到一种方法来制作一条位于所有其他线之间的平均线。提示?
这是我的代码:
import numpy as np
import cv2
cap = cv2.VideoCapture('CVfootage.mov')
while(True):
ret, frame = cap.read()
frame = frame[200:720, 0:1280]
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray,(7,7),0)
edges = cv2.Canny(blur, 50, 150)
lines = cv2.HoughLinesP(image=edges,rho=1,theta=np.pi/180, threshold=100,lines=np.array([]), minLineLength=100,maxLineGap=80)
a,b,c = lines.shape
for i in range(a):
cv2.line(blur, (lines[i][0][0], lines[i][0][1]), (lines[i][0][2], lines[i][0][3]), (0, 0, 255), 3, cv2.LINE_AA)
cv2.imshow('edges', edges)
cv2.imshow('hough', blur)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
您需要调整houghlinesP函数的参数
如果您想要减少彼此相邻的行数:增加 'rho'
如果您总体上想要更少的行:增加阈值