pring换为logger

This commit is contained in:
zqc
2026-01-09 16:12:35 +08:00
parent cb089ca3be
commit fde7ab8e24

View File

@@ -17,22 +17,18 @@ from dataclasses import dataclass
from typing import Dict, Any, Tuple
from datetime import datetime
from utils.logger import setup_logger
logger = setup_logger(__name__)
# 导入人脸识别算法
try:
from api.routes.algorithm_router import video_face_prison_biz
print("[INFO] 成功导入人脸识别算法")
logger.info("[INFO] 成功导入人脸识别算法")
except Exception as e:
print(f"[WARN] 无法导入人脸识别算法: {e}")
logger.error(f"[WARN] 无法导入人脸识别算法: {e}")
# 导入数据库相关模块
try:
from services.sur_alert_record_service import SurAlertRecordService
from database.connection import db_manager
from models.sur_alert_record import AlertType
print("[INFO] 成功导入数据库模块")
except Exception as e:
print(f"[WARN] 无法导入数据库模块: {e}")
# -------------------------- Kadian 检测相关导入 --------------------------
from npu_yolo_onnx_person_car_phone import YOLOv8_ONNX # 主检测模型(人/车/后备箱/手机)
@@ -115,13 +111,13 @@ class KadianDetector:
self.frame_thresh_prisoner = int(self.TIME_THRESHOLD_PRISONER * self.fps)
self.frame_buffer_prisoner = int(self.TIME_TOLERANCE_PRISONER * self.fps)
print(f"\n超参数设置:")
print(f" FPS: {self.fps:.2f}")
# print(f" 判定 'Nobody' 需连续: {self.frame_thresh_nobody} 帧")
print(f" 判定 'police Detected' 需累计检测: {self.frame_thresh_police}")
print(f" 警察丢失缓冲帧数: {self.frame_buffer_police}")
print(f" 判定 'prisoner Detected' 需累计检测: {self.frame_thresh_prisoner}")
print(f" 犯人丢失缓冲帧数: {self.frame_buffer_prisoner}")
logger.info(f"\n超参数设置:")
logger.info(f" FPS: {self.fps:.2f}")
# logger.info(f" 判定 'Nobody' 需连续: {self.frame_thresh_nobody} 帧")
logger.info(f" 判定 'police Detected' 需累计检测: {self.frame_thresh_police}")
logger.info(f" 警察丢失缓冲帧数: {self.frame_buffer_police}")
logger.info(f" 判定 'prisoner Detected' 需累计检测: {self.frame_thresh_prisoner}")
logger.info(f" 犯人丢失缓冲帧数: {self.frame_buffer_prisoner}")
# ==========================================
# 状态变量初始化
@@ -221,7 +217,7 @@ class KadianDetector:
# ========= 警察和犯人检测 =========
for t in police_prisoner_dets_tracks:
# print("t: {}".format(t))
# logger.info("t: {}".format(t))
tid = t.track_id
# cls_id = -1
@@ -249,7 +245,7 @@ class KadianDetector:
cls_id = 0
elif role == "prisoner":
cls_id = 1
# print("tid: {}, role: {}, cls: {}".format(tid, role,cls_id))
# logger.info("tid: {}, role: {}, cls: {}".format(tid, role,cls_id))
x1, y1, x2, y2 = map(int, t.tlbr)
@@ -407,7 +403,7 @@ class WebSocketSender(threading.Thread):
async def _run_async(self):
async with websockets.serve(self._ws_handler, WS_HOST, WS_PORT):
print(f"[INFO] WebSocket server started at ws://{WS_HOST}:{WS_PORT}")
logger.info(f"[INFO] WebSocket server started at ws://{WS_HOST}:{WS_PORT}")
await self._broadcaster()
def run(self):
@@ -449,12 +445,12 @@ class RTSPCaptureWorker(threading.Thread):
# cap.set(cv2.CAP_PROP_HW_ACCELERATION, cv2.VIDEO_ACCELERATION_ANY)
if not cap.isOpened():
print(f"[ERROR] Cannot open RTSP: {self.camera_cfg.rtsp_url}")
logger.error(f"[ERROR] Cannot open RTSP: {self.camera_cfg.rtsp_url}")
time.sleep(2)
self.reconnect_count += 1
continue
print(f"[INFO] Successfully opened RTSP: {self.camera_cfg.name}")
logger.info(f"[INFO] Successfully opened RTSP: {self.camera_cfg.name}")
self.reconnect_count = 0 # 重置重连计数
# # 设置帧率(可选)
@@ -464,7 +460,7 @@ class RTSPCaptureWorker(threading.Thread):
ret, frame = cap.read()
if not ret:
# 检查流是否结束
print(f"[WARN] Failed to read frame from {self.camera_cfg.name}")
logger.warning(f"[WARN] Failed to read frame from {self.camera_cfg.name}")
# 检查是否还有数据
time.sleep(0.1)
@@ -490,7 +486,7 @@ class RTSPCaptureWorker(threading.Thread):
self.raw_queue.put(item, timeout=0.5)
except queue.Full:
print(f"[WARN] Queue full, dropping frame from {self.camera_cfg.name}")
logger.warning(f"[WARN] Queue full, dropping frame from {self.camera_cfg.name}")
continue
# 控制读取速度,避免过快
@@ -499,12 +495,12 @@ class RTSPCaptureWorker(threading.Thread):
cap.release()
except Exception as e:
print(f"[ERROR] Error in RTSP capture for {self.camera_cfg.name}: {e}")
logger.error(f"[ERROR] Error in RTSP capture for {self.camera_cfg.name}: {e}")
time.sleep(2)
self.reconnect_count += 1
if self.reconnect_count >= self.max_reconnects:
print(f"[ERROR] Max reconnects reached for {self.camera_cfg.name}, stopping.")
logger.error(f"[ERROR] Max reconnects reached for {self.camera_cfg.name}, stopping.")
# ========================= 帧处理线程 =========================
@@ -541,7 +537,7 @@ class FrameProcessorWorker(threading.Thread):
self.video_writers[camera_id] = writer
self.video_files[camera_id] = filepath
self.video_counts[camera_id] = 0
print(f"[INFO] New segment: {filepath}")
logger.info(f"[INFO] New segment: {filepath}")
return writer, filepath
def _close_segment_if_needed(self, camera_id: int):
@@ -550,7 +546,7 @@ class FrameProcessorWorker(threading.Thread):
writer = self.video_writers.get(camera_id)
if writer is not None:
writer.release()
print(f"[INFO] Close segment: camera={camera_id}, file={self.video_files[camera_id]}")
logger.info(f"[INFO] Close segment: camera={camera_id}, file={self.video_files[camera_id]}")
self.video_writers.pop(camera_id, None)
self.video_counts.pop(camera_id, None)
@@ -595,7 +591,7 @@ class FrameProcessorWorker(threading.Thread):
# last_processed_time[cam_id] = current_time
#
# if time_since_last > 0:
# print(f"[DEBUG] 摄像头{cam_id} - 距离上次处理间隔: {time_since_last:.1f}ms")
# logger.info(f"[DEBUG] 摄像头{cam_id} - 距离上次处理间隔: {time_since_last:.1f}ms")
# 2) 进行人脸识别(如果启用)
current_face_alert = None
@@ -609,20 +605,7 @@ class FrameProcessorWorker(threading.Thread):
for result in face_results:
if result['has_passed']:
print(f"[INFO] 犯人带出: {result['passed_person_id']}")
# 插入数据库告警记录
try:
with db_manager.get_session() as db:
alert_service = SurAlertRecordService(db)
alert_service.create_alert_record(
alert_type=AlertType.PRISONER_OUT,
person_id=int(result['passed_person_id']),
camera_id=cam_id
)
# print(f"[INFO] 告警记录已插入数据库: person_id={result['passed_person_id']}")
except Exception as e:
print(f"[ERROR] 插入告警记录失败: {e}")
logger.info(f"[INFO] 犯人带出: {result['passed_person_id']}")
# 记录当前帧人脸告警信息
current_face_alert = {
@@ -631,7 +614,7 @@ class FrameProcessorWorker(threading.Thread):
}
except Exception as e:
print(f"[WARN] 人脸识别处理失败: {e}")
logger.error(f"[WARN] 人脸识别处理失败: {e}")
# 执行检测
result = detector.process_frame(frame.copy(), cam_id, ts)
@@ -658,7 +641,7 @@ class FrameProcessorWorker(threading.Thread):
try:
img_b64 = self._encode_image_to_base64(result_img)
except Exception as e:
print(f"[ERROR] Encode image failed: {e}")
logger.error(f"[ERROR] Encode image failed: {e}")
img_b64 = None
if img_b64 is not None:
@@ -678,7 +661,7 @@ class FrameProcessorWorker(threading.Thread):
try:
self.ws_queue.put(msg, timeout=1.0)
except queue.Full:
print("[WARN] ws_send_queue full, drop frame message")
logger.warning("[WARN] ws_send_queue full, drop frame message")
@@ -715,7 +698,7 @@ class RTSPService:
w = RTSPCaptureWorker(cam, self.raw_queue, self.stop_event)
w.start()
self.capture_workers.append(w)
print("[INFO] Kadian RTSP Service started")
logger.info("[INFO] Kadian RTSP Service started")
def stop(self):
self.stop_event.set()
@@ -725,7 +708,7 @@ class RTSPService:
w.join(timeout=2.0)
self.processor.join(timeout=2.0)
self.ws_sender.join(timeout=2.0)
print("[INFO] Service stopped")
logger.info("[INFO] Service stopped")
if __name__ == "__main__":