From 682b4386babedb481b968771360a3f3b0a150cc9 Mon Sep 17 00:00:00 2001 From: zimoyin <2556608754@qq.com> Date: Sat, 10 Jan 2026 09:41:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(app):=20=E6=B7=BB=E5=8A=A0=20YOLO=20?= =?UTF-8?q?=E7=AE=A1=E9=81=93=E5=BA=94=E7=94=A8=E7=A8=8B=E5=BA=8F=E4=B8=BB?= =?UTF-8?q?=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 app.py diff --git a/app.py b/app.py new file mode 100644 index 0000000..c8df3d1 --- /dev/null +++ b/app.py @@ -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() \ No newline at end of file