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

embedded/2024/9/25 4:36:26/

        首先安装所需的库和依赖项,确保你已经安装了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.ppmy.cn/embedded/8527.html

相关文章

MATLAB使用速成 第一章(MATLAB入门)

一、MATLAB的命令窗口 1、窗口概览 2、一些基本使用 (1)在输入一条命令(或者说表达式)并按下回车后,窗口往往会输出操作结果(这不是必然的,有些命令,比如clc,它并不会输…

小型架构实验模拟

一 实验需求 二 实验环境 22 机器: 做nginx 反向代理 做静态资源服务器 装 nginx keepalived filebeat 44机器: 做22 机器的备胎 装nginx keepalived 99机器:做mysql的主 装mysqld 装node 装filebeat 77机器:做mysq…

SkyWalking 为所有的API接口增加 tag

背景胡扯 线上接口报错,接着被 SkyWalking 抓到,然后 SkyWalking 触发告警,最后老板你,让你辛苦一下,在明早上班前把这个bug 改了,并告诉你你是全公司的希望。谁说不是呢?为公司业务保驾护航&a…

layer弹出层点击关闭按钮刷新父页面

在弹出层页面&#xff0c;&#xff0c;找到layer关闭按钮&#xff0c;写一个关闭事件&#xff0c;里面去执行js方法。 例&#xff1a;页面写个a标签方便调用&#xff1a;<a id“hidalayerclose” style“display: none;” οnclick“fureload()”> parent.$(".lay…

【网站项目】书籍销售系统小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

BI工具选择困难?参考这家三甲医院如何进行BI选型

在当今医疗行业&#xff0c;随着信息技术的飞速发展和数据量的爆炸性增长&#xff0c;三甲医院作为医疗服务的高端提供者&#xff0c;面临着前所未有的挑战与机遇。如何从海量的医疗数据中提取有价值的信息&#xff0c;优化医院运营&#xff0c;提高诊疗质量&#xff0c;成为医…

velero备份恢复k8s集群 —— 筑梦之路

官网&#xff1a;Velero 简介 Velero 是vmware开源的一个云原生的灾难恢复和迁移工具&#xff0c;它本身也是开源的,采用Go语言编写&#xff0c;可以安全的备份、恢复和迁移Kubernetes集群资源数据&#xff1b;官网https://velero.io/。 Velero 是西班牙语意思是帆船&#xf…

开源AI智能名片源码:虚实融合引领品牌营销新篇章

随着数字时代的飞速发展&#xff0c;品牌营销已经步入了一个全新的纪元。在这个变革的时代&#xff0c;开源AI智能名片源码以其独特的虚实融合功能&#xff0c;正引领着品牌营销走向更加智能化、个性化的道路。 传统的品牌营销往往局限于单向的信息传播&#xff0c;难以与用户产…