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

本文介绍了如何使用Python的OpenCV和YOLOv8库进行视频目标检测,包括安装必要的库,加载YOLOv8模型,处理视频帧并进行目标检测,最后将结果保存到输出视频中并释放资源。
摘要由CSDN通过智能技术生成

        首先安装所需的库和依赖项,确保你已经安装了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 YOLO


def 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:
            break
        result = 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'):
            break
    cap.release()
    cv2.destroyAllWindows()
    print('保存完成')
    video_yolo_path='C:\\Users\\25055\Desktop\\output.mp4'
    return video_yolo_path

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
yolov5视频目标检测计数是通过在detect.py文件中进行修改来实现的。您可以按照以下步骤进行操作: 1. 打开detect.py文件。 2. 在文件中找到以下代码行:count = 1 # !!!初始计数count=1 3. 将初始计数的值修改为1。 4. 在代码中找到以下代码行:count = 1 # !!! 这里加了循环累加 5. 确保循环累加的代码行没有被注释掉。如果被注释了,请取消注释。 6. 保存并关闭文件。 通过以上修改,您的yolov5视频目标检测结果中的框将会显示相应的计数值。请注意,这种计数方法是不区分类别的。如果您希望按类别进行计数,您可以尝试进一步修改label变量来展示相应的类别计数信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [基于yolov5和pyqt的可视化目标检测支持摄像头、视频和图像检测](https://download.csdn.net/download/weixin_41868104/84988881)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [YOLOv5实现目标计数](https://blog.csdn.net/Albert_yeager/article/details/129482887)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JayGboy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值