feat(app): 添加 YOLO 管道应用程序主入口

This commit is contained in:
zimoyin
2026-01-10 09:41:42 +08:00
parent 23555e0cc9
commit 682b4386ba
+47
View File
@@ -0,0 +1,47 @@
import asyncio
from yolo_gs.pipeline.handler.DrawDirectionProcessor import DrawDirectionProcessor
from yolo_gs.pipeline.handler.DrawGraffitiProcessor import DrawGraffitiProcessor
from yolo_gs.pipeline.handler.DrawObjectBoxProcessor import DrawObjectBoxProcessor
from yolo_gs.pipeline.handler.GraffitiProcessor import GraffitiProcessor
from yolo_gs.pipeline.handler.ResultLogger import ResultLogger
from yolo_gs.pipeline.handler.RetrogradeProcessor import RetrogradeProcessor
from yolo_gs.pipeline.handler.graffiti_visualizer import GraffitiVisualizer
import cv2
from yolo_gs.pipeline.data_source import video_yolo_iterator
from yolo_gs.pipeline.pipeline import Pipeline
# ===================== 测试运行 =====================
if __name__ == "__main__":
# 1. 创建管道
pipeline = Pipeline()
# 2. 添加同步处理器(按执行顺序执行,每个处理器的输出作为下一个处理器的输入)
pipeline.add_processor(GraffitiProcessor(name="涂鸦计算器"))
pipeline.add_processor(RetrogradeProcessor(name="逆行检测器"))
pipeline.add_processor(DrawDirectionProcessor())
pipeline.add_processor(DrawGraffitiProcessor())
pipeline.add_processor(DrawObjectBoxProcessor())
pipeline.add_processor(ResultLogger(name="结果日志器"))
# 4. 构建视频+YOLO跟踪迭代器(替换为你的视频路径,或0使用摄像头)
video_path = "123.mp4" # 或 0 (摄像头)
try:
# 使用跟踪迭代器,可以获取对象ID
data_iter = video_yolo_iterator(video_path, model_path="yolo11s.pt",tracker="botsort.yaml", device="0")
# 5. 运行管道,迭代处理数据
for processed_data in pipeline.run(data_iter):
# 显示帧(按q退出)
frame = processed_data.frame
if frame is not None:
# 直接显示经过管道处理后的帧,其中已经包含了绘制处理器的效果
cv2.imshow("YOLO Tracking Pipeline", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
except Exception as e:
print(f"运行出错: {e}")
finally:
cv2.destroyAllWindows()