feat(app): 添加 YOLO 管道应用程序主入口
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user