0
好吧,我想製作一個程序來檢測相機流中的一條線。這是用於線路跟隨者機器人。所以如果機器人知道兩條平行線的角度,他知道他必須騎自行車。霍夫變換線追隨者
我執行後續功能:
- 製作幀灰色
- 高斯模糊
- Canny邊緣
- 霍夫變換
的第一件事是,即當沒有行,程序終止。 (也只有幾行時)。
我不知道該如何解決。
此外,我想獲得線的角度。我想要得到的2條平行線的距離(和知道魔女2線平行)
這是我非常簡單的代碼,我包含了大部分互聯網上的例子:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
ret = cap.set(3,640)
ret = cap.set(4,480)
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
gauss = cv2.GaussianBlur(gray,(3,3),0)
edges = cv2.Canny(gray,0,150,apertureSize = 3)
lines = cv2.HoughLines(edges,1,np.pi/180,50)
for rho,theta in lines[0]:
a = np.cos(theta)
b = np.sin(theta)
x0 = a*rho
y0 = b*rho
x1 = int(x0 + 1000*(-b))
y1 = int(y0 + 1000*(a))
x2 = int(x0 - 1000*(-b))
y2 = int(y0 - 1000*(a))
cv2.line(frame,(x1,y1),(x2,y2),(0,0,255),2)
cv2.imshow('frame',edges)
cv2.imshow('frame',frame)