From 6c6c9b4c0362c082a0a85c9dc45a5456342f5768 Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Thu, 5 Feb 2026 15:23:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20MQTT=20=E6=9C=AA?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ResultReporter 创建后需调用 initialize() 方法初始化 MQTT 连接 Co-Authored-By: Claude Opus 4.5 --- main.py | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index 5cf347b..9c6ec97 100644 --- a/main.py +++ b/main.py @@ -123,6 +123,7 @@ class EdgeInferenceService: def _init_reporter(self): """初始化结果上报器""" self._reporter = ResultReporter() + self._reporter.initialize() # 初始化存储和MQTT连接 self._logger.info("结果上报器初始化成功") def _init_algorithm_manager(self): @@ -187,6 +188,10 @@ class EdgeInferenceService: """处理视频帧 - 批量处理多 ROI""" try: roi_configs = self._config_manager.get_roi_configs_with_bindings(camera_id) + + # 每100帧打印一次状态 + if self._performance_stats["total_frames_processed"] % 100 == 0: + self._logger.info(f"[{camera_id}] 已处理 {self._performance_stats['total_frames_processed']} 帧, ROI数: {len(roi_configs)}") roi_items = [] for roi in roi_configs: @@ -252,6 +257,11 @@ class EdgeInferenceService: conf_threshold=self._settings.inference.conf_threshold ) + # 诊断日志:显示每个 ROI 的检测结果数量 + total_detections = sum(len(r[0]) for r in batch_results) + if total_detections > 0: + self._logger.info(f"[推理] batch_size={batch_size}, 总检测数={total_detections}") + for idx, (camera_id, roi, bind, frame, _, scale_info) in enumerate(roi_items): boxes, scores, class_ids = batch_results[idx] @@ -319,23 +329,30 @@ class EdgeInferenceService: if self._algorithm_manager is None: self._logger.warning("算法管理器不可用,跳过算法处理") return - + roi_id = roi.roi_id algo_code = bind.algo_code algo_params = bind.params or {} - + + # 诊断日志:检测到目标(使用 INFO 级别确保能看到) + if len(boxes) > 0: + self._logger.info(f"[{camera_id}] ROI={roi_id[:8]} 检测到 {len(boxes)} 个目标, algo={algo_code}") + self._algorithm_manager.register_algorithm( roi_id=roi_id, bind_id=bind.bind_id, algorithm_type=algo_code, params=algo_params ) - + tracks = self._build_tracks(roi, boxes, scores, class_ids, scale_info) - + if not tracks: return - + + # 诊断日志:tracks 内容(INFO 级别) + self._logger.info(f"[{camera_id}] tracks: {[t.get('class') for t in tracks]}, target_class={bind.target_class}") + alerts = self._algorithm_manager.process( roi_id=roi_id, bind_id=bind.bind_id, @@ -344,7 +361,15 @@ class EdgeInferenceService: tracks=tracks, current_time=frame.timestamp ) - + + # 诊断日志:算法处理结果 + if alerts: + self._logger.info(f"[{camera_id}] 算法 {algo_code} 返回 {len(alerts)} 个告警") + else: + # 获取算法状态用于诊断 + algo_status = self._algorithm_manager.get_status(roi_id) + self._logger.info(f"[{camera_id}] 算法 {algo_code} 无告警, 状态: {algo_status}") + for alert in alerts: self._performance_stats["total_alerts_generated"] += 1