首页 > 其他分享 >yolo --- 对视频进行目标检测,实时可视化预测结果,保存预测视频

yolo --- 对视频进行目标检测,实时可视化预测结果,保存预测视频

时间:2024-12-02 23:14:04浏览次数:8  
标签:视频 cap yolo cv2 --- video output path best

 

import os

import cv2
from ultralytics import YOLO


def detect_objects_in_video(best_pt_path, video_path, output_video_name):
    output_video_path = video_path.rsplit('.', 1)[0] + '_' + output_video_name + '.mp4'

    model = YOLO(best_pt_path)

    cap = cv2.VideoCapture(video_path)

    fps = cap.get(cv2.CAP_PROP_FPS)
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    out = cv2.VideoWriter(output_video_path, fourcc, fps, (width, height))

    while cap.isOpened():
        success, frame = cap.read()

        if success:
            results = model(frame)

            annotated_frame = results[0].plot()

            out.write(annotated_frame)

            cv2.imshow('YOLO Detection', annotated_frame)

            if cv2.waitKey(1) & 0xFF == ord('q'):  # 退出循环的话按“q”
                break
        else:
            break

    cap.release()
    out.release()

    cv2.destroyAllWindows()


if __name__ == "__main__":
    best_pt_path = r"D:\yolo11\ultralytics\runs\detect\train3\weights\best.pt"  # best.pt替换成自己的
    video_path = r"C:\Users\Administrator\Desktop\Counter-strike 2 2024.12.02 - 19.58.00.11.mp4"  # 原视频路径
    output_video_name = "out"

    detect_objects_in_video(best_pt_path, video_path, output_video_name)

    output_video_path = video_path.rsplit('.', 1)[0] + '_' + output_video_name + '.mp4'
    os.startfile(output_video_path)

 

标签:视频,cap,yolo,cv2,---,video,output,path,best
From: https://www.cnblogs.com/god-of-death/p/18582967

相关文章

  • manim边做边学--曲面
    Surface类是Manim中专为创建和操控复杂的三维表面而打造的。在实际应用中,无论是创建数学教学中的几何模型,还是模拟物理现象中的曲面变化,甚至是构建复杂的动画场景中的三维元素,Surface类都能以其强大的功能和灵活性满足我们的需求。通过Surface类的参数和方法,我们可以创造出既逼......
  • AntVL7-上手流程
    简介基于WebGL的开源大规模地理空间数据可化视分析开发框架。L7中的L代表Location,7代表世界七大洲。专注数据可视化表达,通过颜色、大小、纹理,方向,体积等视觉变量设置实现从数据到信息清晰,有效的表达。L7能够满足常见的地图图表,BI系统的可视化分析、以及GIS,交通,电力,国......
  • 未发表,高水平论文首选!特征提取+图卷积神经网络!SABO-VMD-GCN轴承故障诊断
    未发表,高水平论文首选!特征提取+图卷积神经网络!SABO-VMD-GCN轴承故障诊断目录未发表,高水平论文首选!特征提取+图卷积神经网络!SABO-VMD-GCN轴承故障诊断效果一览基本描述程序设计参考资料效果一览基本描述先用SABO-VMD提取西储大学轴承诊断数据特征,进而基......
  • LeetCode题练习与总结:字典序的第 K 小数字--440
    一、题目描述给定整数 n 和 k,返回  [1,n] 中字典序第 k 小的数字。示例1:输入:n=13,k=2输出:10解释:字典序的排列是[1,10,11,12,13,2,3,4,5,6,7,8,9],所以第二小的数字是10。示例2:输入:n=1,k=1输出:1提示:1<=k<=n<......
  • YOLOv8改进,YOLOv8引入SAConv可切换空洞卷积,二次创新C2f结构
    摘要作者提出的技术结合了递归特征金字塔和可切换空洞卷积,通过强化多尺度特征学习和自适应的空洞卷积,显著提升了目标检测的效果。理论介绍空洞卷积(AtrousConvolution)是一种可以在卷积操作中插入“空洞”来扩大感受野的技术,更有效地捕捉到图像中的大范围上下文信息......
  • LeetCode题练习与总结:排列硬币--441
    一、题目描述你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。示例1:输入:n=5输出:2解释:因为第三行不完......
  • YOLOv11改进,YOLOv11添加SAConv可切换空洞卷积,二次创新C3k2结构
    摘要作者提出的技术结合了递归特征金字塔和可切换空洞卷积,通过强化多尺度特征学习和自适应的空洞卷积,显著提升了目标检测的效果。理论介绍空洞卷积(AtrousConvolution)是一种可以在卷积操作中插入“空洞”来扩大感受野的技术,更有效地捕捉到图像中的大范围上下文信息......
  • 【雷达】对萨德系统ANTPY-2雷达的威力范围仿真计算【含Matlab源码 9707期】
    ......
  • kube-proxy的iptables工作模式分析
    系列文章目录iptables基础知识文章目录系列文章目录前言一、kube-proxy介绍1、kube-proxy三种工作模式2、iptables中k8s相关的链二、kube-proxy的iptables模式剖析1.集群内部通过clusterIP访问到pod的流程1.1.流程分析2.从外部访问内部serviceclusterIP后端pod的流......
  • jQuery轻量级Lightbox插件-Colorbox
    演示       下载 ColorBox是一款功能强大的轻量级Jquery Lightbox插件。ColorBox支持图片展示、图片分组、幻灯片、行内样式和iframe内容。该lightbox插件的兼容性极好,可以兼容IE7+的IE浏览器。它的特点有:支持图片展示、图片分组、幻灯片、行内样式和ifram......