YOLO:输入mp4视频数据,经过YOLO目标检测算法,输出带有目标框的新视频

作者:CSDN @ 养乐多

本文将介绍输入mp4视频数据,经过YOLO目标检测算法,输出带有目标框的新视频的代码脚本。


文章目录


一、代码

代码只需要安装好cv2、ultralytics,然后修改模型路径、输入mp4视频文件路径、保存文件的路径。点击运行即可进行对视频数据的推理,结果保存一个新的带有目标框的新视频。

python 复制代码
import cv2
from ultralytics import YOLO
import datetime

# 加载YOLOv8n模型
model = YOLO('../预训练模型/yolov8n.pt')  # 替换为你的模型路径

# 打开输入视频
input_video_path = '../测试mp4视频/yourInputVideo.mp4'  # 替换为你的输入视频路径
cap = cv2.VideoCapture(input_video_path)

# 获取视频信息
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

# 获取当前时间并生成时间戳后缀
now = datetime.datetime.now()
time_str = now.strftime("%Y%m%d_%H%M%S")

# 定义输出视频路径并加上时间戳后缀
output_video_path = f'./runsVideo/output_video_{time_str}.mp4'  # 替换为你的输出视频路径
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_video_path, fourcc, fps, (frame_width, frame_height))

frame_number = 0

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    # 使用YOLOv8进行检测
    results = model(frame)

    # 解析结果并绘制检测框
    for result in results:
        boxes = result.boxes
        for box in boxes:
            x1, y1, x2, y2 = map(int, box.xyxy[0])  # 获取检测框坐标
            confidence = float(box.conf[0])  # 获取置信度
            cls = int(box.cls[0])  # 获取类别
            label = model.names[cls]  # 获取类别名称

            # 绘制检测框和标签
            cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
            cv2.putText(frame, f"{label} {confidence:.2f}", (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

    # 获取当前时间并绘制到帧上
    now = datetime.datetime.now()
    time_str = now.strftime("%Y-%m-%d %H:%M:%S")
    cv2.putText(frame, time_str, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)

    # 写入处理后的帧
    out.write(frame)

    frame_number += 1
    print(f'Processing frame {frame_number}/{frame_count}')

# 释放资源
cap.release()
out.release()
相关推荐
浮华落定7 小时前
DeepSeek+即梦 做AI视频
人工智能·chatgpt·音视频
Black蜡笔小新12 小时前
从中心化到点对点:视频通话SDK组件EasyRTC如何通过WebP2P技术实现低延迟通信
网络协议·音视频·p2p
weixin_贾13 小时前
遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)
目标检测·cnn·transformer
@Mr_LiuYang14 小时前
DarkLabel 2.4使用指南:高效标注视频数据目标检测标签
人工智能·目标检测·自动标注·视频标注·darklabel·yolo数据标注
@Mr_LiuYang16 小时前
用自己的数据训练yolov11目标检测
yolo·目标检测·实例分割·yolov11
清月电子17 小时前
BT401双模音频蓝牙模块如何开启ble的透传,有什么注意事项
单片机·嵌入式硬件·物联网·音视频
深圳市青牛科技实业有限公司17 小时前
芯麦 GC1808:高性能、低成本的立体声音频模数转换器
人工智能·嵌入式硬件·算法·音视频·能源·新能源·电动工具
cuijiecheng201817 小时前
音视频入门基础:RTP专题(9)——FFmpeg接收RTP流的原理和内部实现
ffmpeg·音视频
京河小蚁18 小时前
微信云开发小程序音频播放踩坑记录 - 从熄屏播放到iOS静音
微信·小程序·音视频
9527华安18 小时前
FPGA实现SDI视频解码转GTY光口传输,基于GS2971+Aurora 8b/10b编解码架构,提供工程源码和技术支持
fpga开发·架构·音视频·8b/10b·sdi·gty·gs2971