当前位置: 首页 > news >正文

如何实现YOLOv8保存目标检测后的视频文件

        首先安装所需的库和依赖项,确保你已经安装了OpenCV和YOLOv8的相关库和依赖项。你可以使用pip或conda来安装它们。
        其次加载YOLOv8模型,使用YOLOv8的训练权重文件和配置文件,加载模型并进行初始化。这可以通过使用适当的库函数来完成,例如OpenCV的dnn.readNetFromDarknet()。
        使用OpenCV的cv2.VideoCapture()函数打开要进行目标检测的视频文件。你需要提供视频文件的路径作为参数。
        创建输出视频文件:使用OpenCV的cv2.VideoWriter()函数创建一个输出视频文件,用于保存目标检测后的结果。你需要指定输出视频的路径、编解码器、帧率和分辨率等参数。
        逐帧进行目标检测,使用一个循环来逐帧读取视频文件,然后将每一帧送入YOLOv8模型进行目标检测。你可以使用OpenCV的cv2.imshow()函数将检测结果显示在屏幕上,或者将其绘制在原始帧上。
        将检测结果写入输出视频,将每一帧的检测结果写入输出视频文件。你可以使用OpenCV的cv2.VideoWriter()函数的write()方法来实现。最后释放资源,在处理完所有帧后,记得释放所有打开的视频文件和释放内存等资源。

具体代码如下:

import cv2
from ultralytics import YOLOdef yolo_pre():yolo=YOLO('./yolov8n.pt')video_path='C:\\Users\\25055\\Desktop\\测试2.mp4' #检测视频的地址cap = cv2.VideoCapture(video_path)  # 创建一个 VideoCapture 对象,用于从视频文件中读取帧# 获取视频帧的维度frame_width = int(cap.get(3))frame_height = int(cap.get(4))# 创建VideoWriter对象fourcc = cv2.VideoWriter_fourcc(*'mp4v')out = cv2.VideoWriter('C:\\Users\\25055\Desktop\\output.mp4', fourcc, 20.0, (frame_width, frame_height)) #保存检测后视频的地址while cap.isOpened():status, frame = cap.read()  # 使用 cap.read() 从视频中读取每一帧if not status:breakresult = yolo.predict(source=frame, save=True)result = result[0]anno_frame = result.plot()#cv2.imshow('行人', anno_frame)out.write(anno_frame) #写入保存# 注释的框架是通过调用 result.plot() 获得的,它会在框架上绘制边界框和标签。# 带注释的框架使用 cv2.imshow() 窗口名称“行人”显示。if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()print('保存完成')video_yolo_path='C:\\Users\\25055\Desktop\\output.mp4'return video_yolo_path

http://www.lryc.cn/news/339603.html

相关文章:

  • LlamaIndex 组件 - Prompts
  • Github 2024-04-16Python开源项目日报 Top10
  • ElasticSearch nested 字段多关键字搜索,高亮全部匹配关键字的处理
  • python_31-32
  • 关于机器学习/深度学习的一些事-答知乎问(四)
  • [spring] Spring Boot REST API - 项目实现
  • ELK之Filebeat实用配置及批量部署(部署200+可用)
  • 用odin实现的资源复制编辑器
  • linux监控文件操作行为
  • 单链表接口函数的实现(增删查改)
  • 超低功耗Sub-1G收发芯片DP32RF002 M0内核(G)FSK/OOK 无线收发机的32位SoC芯片
  • uniapp_微信小程序_NaN
  • 1043: 利用栈完成后缀表达式的计算
  • 初学ELK - elk部署
  • [Java EE] 计算机工作原理与操作系统简明概要
  • 【尚硅谷】Git与GitLab的企业实战 学习笔记
  • 如何在MobaXterm上使用rz命令
  • 【计算机考研】408网课汇总+资源分享
  • 如何在OceanBase v4.2 中快速生成随机数据
  • nvm node.js的安装
  • 【Docker】安装Redis、Nginx
  • RK3568 UBUNTU修改网卡名称
  • 【华为OD机试C++】统计字符
  • 百货商场用户画像描绘and价值分析(下)
  • spring-cloud微服务gateway
  • 【python】在pycharm创建一个新的项目
  • java小作业(9)----用函数实现斐波那契数列(第二遍)
  • 部署项目的时候的一些错误
  • 1044: 顺序栈基本操作的实现
  • 微信小程序(总结)