feat(app): 集成loguru日志系统并优化错误处理
- 在app.py中引入loguru并配置日志轮转、异步输出等功能 - 添加全局日志初始化函数和程序启动/退出日志记录 - 将所有print语句替换为logger.info/error/debug/warning方法 - 在data_source.py中添加模型加载和视频打开的日志记录 - 在各个处理器中集成日志记录器实例并记录处理状态 - 修改处理器模块导入路径以符合相对导入规范 - 在requirements.txt中添加loguru依赖包 - 统一异常处理的日志记录方式,便于调试和监控
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from loguru import logger
|
||||
from typing import Iterator
|
||||
import cv2
|
||||
from ultralytics import YOLO
|
||||
@@ -16,15 +17,18 @@ def video_yolo_iterator(video_path: str, model_path: str = "yolov8n.pt", tracker
|
||||
"""
|
||||
# 加载YOLO模型
|
||||
model = YOLO(model_path)
|
||||
logger.info(f"已加载YOLO模型: {model_path}")
|
||||
# 打开视频
|
||||
cap = cv2.VideoCapture(video_path)
|
||||
if not cap.isOpened():
|
||||
logger.error(f"无法打开视频: {video_path}")
|
||||
raise ValueError(f"无法打开视频: {video_path}")
|
||||
|
||||
frame_idx = 0
|
||||
try:
|
||||
# 使用 model.track 替代 model 进行跟踪检测
|
||||
results_stream = model.track(source=video_path, tracker=tracker, device=device, stream=True)
|
||||
logger.info(f"已开始跟踪视频: {video_path}")
|
||||
|
||||
last_data = PipelineData()
|
||||
for r in results_stream: # 迭代跟踪结果
|
||||
@@ -67,6 +71,7 @@ def video_yolo_detect_iterator(video_path: str, model_path: str = "yolov8n.pt",
|
||||
# 打开视频
|
||||
cap = cv2.VideoCapture(video_path)
|
||||
if not cap.isOpened():
|
||||
logger.error(f"无法打开视频: {video_path}")
|
||||
raise ValueError(f"无法打开视频: {video_path}")
|
||||
|
||||
frame_idx = 0
|
||||
@@ -94,4 +99,4 @@ def video_yolo_detect_iterator(video_path: str, model_path: str = "yolov8n.pt",
|
||||
frame_idx += 1
|
||||
finally:
|
||||
# 确保视频流关闭
|
||||
cap.release()
|
||||
cap.release()
|
||||
Reference in New Issue
Block a user