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

refactor(coordinator): 重构联动控制器代码结构与逻辑

- 重新组织了联动控制器的类结构,提升代码模块化和清晰度
- 优化目标选择策略,实现更灵活的目标评分和选择机制
- 将事件驱动、异步控制器独立为子类,支持不同联动模式
- 引入PTZ控制命令封装,解耦PTZ控制线程逻辑
- 增加配对图片保存功能,支持球机与全景画面关联存储
- 优化OCR识别频率控制,减少API调用压力
- 增强线程安全,加入状态和目标锁保护
- 细化日志和统计信息,便于运行监控和调试
- 删除冗余注释,统一代码风格和注释规范
wenhongquan 3 napja
szülő
commit
4f73daf371
1 módosított fájl, 17 hozzáadás és 6 törlés
  1. 17 6
      dual_camera_system/coordinator.py

+ 17 - 6
dual_camera_system/coordinator.py

@@ -952,19 +952,30 @@ class AsyncCoordinator(Coordinator):
                     if tracked and self._enable_paired_saving and self._paired_saver is not None:
                         self._create_detection_batch(frame, tracked, frame_size)
                     
-                    # 打印检测日志
+                    # 打印检测日志(使用连续序号,与图片标记一致)
                     if tracked:
+                        person_threshold = DETECTION_CONFIG.get('person_threshold', 0.8)
+                        person_idx = 0
                         for t in tracked:
                             # tracked 是 DetectedObject,使用 center 计算位置
                             x_ratio = t.center[0] / frame_size[0]
                             y_ratio = t.center[1] / frame_size[1]
                             _, _, w, h = t.bbox
                             area = w * h
-                            logger.info(
-                                f"[检测] ✓ 目标ID={t.track_id} "
-                                f"位置=({x_ratio:.3f}, {y_ratio:.3f}) "
-                                f"面积={area} 置信度={t.confidence:.2f}"
-                            )
+                            # 只对达到阈值的人员打印日志并分配序号
+                            if t.class_name == 'person' and t.confidence >= person_threshold:
+                                logger.info(
+                                    f"[检测] ✓ person_{person_idx} "
+                                    f"位置=({x_ratio:.3f}, {y_ratio:.3f}) "
+                                    f"面积={area} 置信度={t.confidence:.2f}"
+                                )
+                                person_idx += 1
+                            else:
+                                logger.debug(
+                                    f"[检测] · 目标ID={t.track_id}({t.class_name}) "
+                                    f"位置=({x_ratio:.3f}, {y_ratio:.3f}) "
+                                    f"置信度={t.confidence:.2f}(低于阈值{person_threshold})"
+                                )
                     elif detections:
                         # 有检测但没跟踪上
                         for d in detections: