问题描述
我想获取移动机器人的旋转值。为此,我有两个不同的值,一个来自陀螺仪传感器,另一个是通过使用高架摄像头来计算aruco标记的头部方向。
问题是,在我的数据中,OH相机的值比传感器返回的值落后10-15个数据点,尽管它们是在同一循环中处理的。 OH值似乎从处理开始就落后了。
我想知道这怎么可能。 cv2.VideoCapture()的连接过程可能会有延迟吗?
有时,经过几秒钟的处理,我的相框也掉落了。 (帧速率= 10 Hz)我为什么丢帧了?
如有必要,我可以为您提供有关已使用功能的更多信息
cap = cv2.VideoCapture('rtsp://ki-test:Ingaex2a@camabus')
# Check if camera opened successfully
if (cap.isOpened()== False):
print("Error opening video stream or file")
#arrays for evaluation
path_xy,secs,heading_sensor,heading_OH = [],[],[]
t_start = datetime.Now()
td,i = 0,0
while td < runtime:
# Capture frame-by-frame
try:
_,frame = cap.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
aruco_dict = aruco.Dictionary_get(aruco.DICT_6X6_250)
parameters = aruco.DetectorParameters_create()
#lists of the corners beloning to each id
corners,_,_ = aruco.detectMarkers(gray,aruco_dict,parameters=parameters)
# handle error: empty frame
except cv2.error as e:
if e.err == "!_src.empty()":
print("dropping frame")
break
else:
continue
#get barcode center
loc = self.calculate_barcode_center(corners)
path_xy.append(loc)
#sensor data
if self.BT_on:
heading_data = self.get_raspi_data(i)
heading_sensor.append(heading_data)
#get direction
robot_heading = self.head_direction(corners)
heading_OH.append(robot_heading)
print ("Step ",i)
i += 1
#get timedelta
t_Now = datetime.Now()
td = round((t_Now - t_start).total_seconds(),3)
secs.append(td)
#Keyboard-Interrupt with "q"
if cv2.waitKey(1) & 0xFF == ord('q'):
break
谢谢您的回答
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)