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) 

回答

0

也许“尝试'可以解决这个问题:

while True: 
    try: 
     'your code' 
    except: 
     'other code' 

这样一个错误不会结束程序,但你可以决定怎么做。