【效果展示】
【测试环境】
ultralytics==8.2.95
gradio==4.26.0
torch==1.9.0+cu111
理论上支持最新ultralytics版本
【实现部分代码】
with gr.Blocks() as demo:
with gr.Tab("追踪"):
# 使用Markdown显示文本信息,介绍界面的功能
gr.Markdown(
"""
# 目标检测与跟踪
基于yolov8+deepsort实现目标追踪
"""
)
# 行容器,水平排列元素
with gr.Row():
# 列容器,垂直排列元素
with gr.Column():
input_path = gr.Video(label="输入视频") # 视频输入控件,用于上传视频文件
model = gr.Dropdown(model_list, value=0, label="模型") # 下拉菜单控件,用于选择模型
detect_class = gr.Dropdown(detect_classes, value=0, label="类别", type='index') # 下拉菜单控件,用于选择要检测的目标类别
output_dir = gr.Textbox(label="输出路径", value=tempfile.mkdtemp()) # 文本框控件,用于指定输出视频的保存路径,默认为一个临时生成的目录
with gr.Row():
# 创建两个按钮控件,分别用于开始处理和停止处理
start_button = gr.Button("开始")
stop_button = gr.Button("停止")
with gr.Column():
output = gr.Video() # 视频显示控件,展示处理后的输出视频
output_path = gr.Textbox(label="输出路径") # 文本框控件,用于显示输出视频的文件路径
# 添加示例到GUI中,允许用户选择预定义的输入进行快速测试
gr.Examples(examples,label="样例",
inputs=[input_path, output_dir, detect_class, model],
outputs=[output, output_path],
fn=start_processing, # 指定处理示例时调用的函数
cache_examples=False) # 禁用示例缓存
# 将按钮与处理函数绑定
start_button.click(start_processing, inputs=[input_path, output_dir, detect_class, model], outputs=[output, output_path])
stop_button.click(stop_processing)
【完整源码下载地址】
https://download.csdn.net/download/FL1623863129/89783430