app.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import gradio as gr
  2. import pandas as pd
  3. from skimage import data
  4. from ultralytics.yolo.data import utils
  5. model = YOLO('yolov8n.pt')
  6. #load class_names
  7. yaml_path = str(Path(ultralytics.__file__).parent/'datasets/coco128.yaml')
  8. class_names = utils.yaml_load(yaml_path)['names']
  9. def detect(img):
  10. if isinstance(img,str):
  11. img = get_url_img(img) if img.startswith('http') else Image.open(img).convert('RGB')
  12. result = model.predict(source=img)
  13. if len(result[0].boxes.boxes)>0:
  14. vis = plots.plot_detection(img,boxes=result[0].boxes.boxes,
  15. class_names=class_names, min_score=0.2)
  16. else:
  17. vis = img
  18. return vis
  19. with gr.Blocks() as demo:
  20. gr.Markdown("# yolov8目标检测演示")
  21. with gr.Tab("捕捉摄像头喔"):
  22. in_img = gr.Image(source='webcam',type='pil')
  23. button = gr.Button("执行检测",variant="primary")
  24. gr.Markdown("## 预测输出")
  25. out_img = gr.Image(type='pil')
  26. button.click(detect,
  27. inputs=in_img,
  28. outputs=out_img)
  29. gr.close_all()
  30. demo.queue(concurrency_count=5)
  31. demo.launch()