Quellcode durchsuchen

fix(双摄像头系统): 增加视频流稳定等待逻辑确保校准可靠性

添加视频流稳定等待逻辑,确保全景和球机帧数据可用后再进行校准
当视频流未就绪时提供明确的警告信息,避免校准失败
wenhongquan vor 4 Tagen
Ursprung
Commit
52aec3ec55
1 geänderte Dateien mit 31 neuen und 2 gelöschten Zeilen
  1. 31 2
      dual_camera_system/main.py

+ 31 - 2
dual_camera_system/main.py

@@ -220,8 +220,37 @@ class DualCameraSystem:
         # 启动球机视频流(校准需要球机画面做特征匹配)
         if not self.ptz_camera.start_stream_rtsp():
             logger.warning("球机RTSP视频流启动失败,校准将无法进行特征匹配")
-            if not self.ptz_camera.start_stream():
-                logger.error("无法启动球机视频流,校准将仅依赖运动检测")
+        
+        # 等待视频流稳定,确保帧数据可用
+        logger.info("等待视频流稳定...")
+        max_wait = 15
+        for i in range(max_wait):
+            pan_frame = self.panorama_camera.get_frame()
+            ptz_frame = self.ptz_camera.get_frame() if self.ptz_camera else None
+            
+            if pan_frame is not None:
+                logger.info(f"全景帧就绪 ({pan_frame.shape}), 等待中...")
+                break
+            time.sleep(1)
+            if (i + 1) % 3 == 0:
+                logger.info(f"等待全景帧... ({i + 1}/{max_wait}秒)")
+        
+        # 再等几秒让流完全稳定
+        ptz_ready = False
+        for i in range(10):
+            ptz_frame = self.ptz_camera.get_frame() if self.ptz_camera else None
+            if ptz_frame is not None:
+                ptz_ready = True
+                logger.info(f"球机帧就绪 ({ptz_frame.shape})")
+                break
+            time.sleep(1)
+        
+        if not ptz_ready:
+            logger.warning("球机帧未就绪,校准可能仅依赖运动检测")
+        
+        final_frame = self.panorama_camera.get_frame()
+        if final_frame is None:
+            logger.error("5秒后仍无法获取全景帧,校准可能失败")
         
         # 创建校准器 - 支持视野重叠发现
         self.calibrator = CameraCalibrator(