31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
"""
|
||
Monitor · 视频分析层(阶段1)
|
||
|
||
模块构成:
|
||
- frames 从 ZLMediaKit 输出的 RTSP 流取帧(OpenCV VideoCapture)
|
||
- motion 运动检测(OpenCV 背景减除)
|
||
- detector 目标检测(ONNX Runtime,缺模型时优雅降级)
|
||
- tracker 单摄像头目标跟踪(轻量 IoU 关联)
|
||
- pipeline 单摄像头流水线:取帧 → 运动 → 检测 → 跟踪 → 事件
|
||
- worker_pool 多路共享的检测器进程池
|
||
- manager 全局分析管理器(启动/停止每路 pipeline,单例)
|
||
|
||
设计原则:
|
||
- 全部用 Python 实现,不引入 C++ 服务。
|
||
- 运动门控:仅在有运动的区域跑检测,显著降低 CPU/GPU 占用。
|
||
- 与 ZLMediaKit 解耦:通过 ZLM 输出的 RTSP URL 取帧,ZLM 仅负责协议接入。
|
||
- 优雅降级:未安装 opencv/numpy/onnxruntime 或未配置模型时,Web 层(Zone/Review/
|
||
Timeline/TrackedObject)仍可正常使用,仅"启动分析"会提示依赖不可用。
|
||
|
||
为避免在 Django 启动期就拉起 OpenCV/ONNX 等较重依赖,本包不在此处 eager 导入
|
||
AnalysisManager;请通过 get_manager() 按需获取。
|
||
"""
|
||
|
||
def get_manager():
|
||
"""懒加载并返回全局 AnalysisManager 单例"""
|
||
from app.analysis.manager import AnalysisManager
|
||
return AnalysisManager()
|
||
|
||
|
||
__all__ = ["get_manager"]
|