好的,我想创建一个程序来检测摄像机流中的一行。这是对于线路跟随器机器人。因此,如果机器人知道两条平行线的角度,他就知道他必须以哪种方式骑行。
我执行以下功能:
首先,当没有行时,程序终止。 (当只有几行时)。
我不知道如何解决这个问题。
另外,我想获得线条的角度。我希望得到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 :(得分:0)
也许'尝试'可以解决这个问题:
while True:
try:
'your code'
except:
'other code'
这样一个错误不会结束程序,但你可以决定该怎么做。