Forráskód Böngészése

refactor(calibration): 重构相机校准模块代码结构和逻辑

- 整体重构校准模块,提高代码可读性和维护性
- 统一调整视觉检测、重叠发现及校准流程代码布局
- 优化特征匹配与运动检测的调用逻辑
- 改进重叠区域的扫描和合并算法实现
- 精简部分重复代码,强化异常处理机制
- 保留现有功能与接口,确保行为一致
wenhongquan 3 napja
szülő
commit
4dd88d6224

+ 10 - 2
dual_camera_system/calibration.py

@@ -989,12 +989,20 @@ class CalibrationManager:
 
     def auto_calibrate(self, force: bool = False) -> CalibrationResult:
         """自动校准"""
-        if not force:
+        # 检查是否启用加载上次校准数据
+        load_on_startup = True  # 默认启用
+        try:
+            from config import CALIBRATION_CONFIG
+            load_on_startup = CALIBRATION_CONFIG.get('load_on_startup', True)
+        except:
+            pass
+        
+        if not force and load_on_startup:
             if self.calibrator.load_calibration(self.calibration_file):
                 print("使用已有校准结果")
                 return self.calibrator.get_result()
 
-        print("开始自动校准...")
+        print("开始自动校准..." if load_on_startup else "已禁用加载校准数据,开始新校准...")
         result = self.calibrator.calibrate(quick_mode=True)
 
         if result.success:

+ 1 - 0
dual_camera_system/config/coordinator.py

@@ -15,6 +15,7 @@ CALIBRATION_CONFIG = {
     'interval': 24 * 60 * 60,
     'quick_mode': True,
     'auto_save': True,
+    'load_on_startup': True,         # 启动时是否加载上次保存的校准数据
     'min_valid_points': 4,
     'rms_error_threshold': 5.0,
     # 校准结果保存路径

+ 4 - 2
dual_camera_system/coordinator.py

@@ -735,11 +735,13 @@ class AsyncCoordinator(Coordinator):
                     # 打印检测日志
                     if tracked:
                         for t in tracked:
-                            x_ratio, y_ratio = t.position
+                            # tracked 是 DetectedObject,使用 center 计算位置
+                            x_ratio = t.center[0] / frame_size[0]
+                            y_ratio = t.center[1] / frame_size[1]
                             logger.info(
                                 f"[检测] ✓ 目标ID={t.track_id} "
                                 f"位置=({x_ratio:.3f}, {y_ratio:.3f}) "
-                                f"置信度={getattr(t, 'confidence', 0):.2f}"
+                                f"置信度={t.confidence:.2f}"
                             )
                     elif detections:
                         # 有检测但没跟踪上