OpenCV使用cv2从OH相机延迟了标记检测.VideoCapture

问题描述

我想获取移动机器人的旋转值。为此,我有两个不同的值,一个来自陀螺仪传感器,另一个是通过使用高架摄像头来计算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 (将#修改为@)