使用 OpenCV 和 YOLO 模型进行实时目标检测并在视频流中显示检测结果_yolo实时视频流检测
文章目录
Github
- https://github.com/ultralytics/ultralytics
官网
- https://docs.ultralytics.com/zh
- https://docs.ultralytics.com/zh/quickstart/
简介
Ultralytics 是一个软件公司,专注于开发计算机视觉和深度学习工具。他们的主要产品是 YOLOv5,这是一个快速、高效的目标检测模型,特别适用于实时应用。YOLOv5 是对经典的 YOLO(You Only Look Once)系列模型的升级,采用了现代化的深度学习技术和优化策略,以提供更好的性能和更低的计算成本。
Ultralytics 还开发了其他一些工具和库,帮助研究人员和开发者在计算机视觉和深度学习领域更高效地工作。他们的开源项目广受欢迎,为社区提供了强大的工具和资源,以推动计算机视觉技术的发展和应用。
视频帧推理
使用 OpenCV (cv2) 和 YOLOv8 对视频帧进行推理。本脚本示例需要安装必要的软件包 (opencv-python 和 ultralytics).
视频设备ID
注: Mac 环境下可以使用 ffmpeg 进行搜索视频设备,当然此步骤可以省略盲填一个编号如果不出视频可再换设备编号。
brew install ffmpeg# 列出视频的设备IDffmpeg -f avfoundation -list_devices true -i \"\"
注意: [0] FaceTime HD Camera,deviceID := 0 是电脑摄像头。
安装依赖
# 怕包冲突可以清理当前环境所有安装包pip freeze | xargs pip uninstall -ypip install --upgrade pip
pip install opencv-pythonpip install ultralytics
检测示例
YOLOv8 这里显示的是经过预训练的检测模型。Detect、Segment 和 Pose 模型是在COCO数据集上预先训练的,而 Classify 模型则是在ImageNet数据集上预先训练的。
首次使用时,模型会自动从最新的Ultralytics 版本下载。
import cv2from ultralytics import YOLO# 加载 YOLOv8 模型model = YOLO(\"yolov8n.pt\")# 打开视频文件# cap = cv2.VideoCapture(\"path/to/your/video/file.mp4\")# 或使用设备“0”打开视频捕获设备读取帧cap = cv2.VideoCapture(0)# 设置视频帧大小cap.set(cv2.CAP_PROP_FRAME_WIDTH, 200)cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 200)title = \"YOLOv8 Inference\"# 设置窗口位置cv2.namedWindow(title, cv2.WINDOW_NORMAL)cv2.moveWindow(title, 200, 200)# 循环播放视频帧while cap.isOpened(): # 从视频中读取一帧 success, frame = cap.read() if success: # 在框架上运行 YOLOv8 推理 results = model(frame) # 在框架上可视化结果 annotated_frame = results[0].plot() # 显示带标注的框架 cv2.imshow(title, annotated_frame) # 如果按下“q”,则中断循环 if cv2.waitKey(1) & 0xFF == ord(\"q\"): break else: # 如果到达视频末尾,则中断循环 break# 释放视频捕获对象并关闭显示窗口cap.release()cv2.destroyAllWindows()
- 输出结果
分类示例
- 直接替换示例代码中的模型就可以。
model = YOLO(\"yolov8n-cls.pt\")
- 输出结果(咖啡杯 0.78 左右)
姿势估计
- 直接替换示例代码中的模型就可以。
model = YOLO(\"yolov8n-pose.pt\")