【学习笔记】-通过opencv对数据进行抽帧

通过opencv对数据进行抽帧

效果展示

原视频为来源于哔哩哔哩王者荣耀解说
对视频每个5帧抽取一帧并按照数字从0依次递增的方式命名
抽帧效果如下
在这里插入图片描述

该程序的实际意义

通过OpenCV对视频抽帧可以用于视频处理、算法模型训练、性能测试和视频编辑等领域。具体如下:

  1. 视频处理:抽帧是视频处理的基础步骤,可以用于提取视频中的关键帧,进行图像分析或者作为其他视频处理任务的输入。
  2. 算法模型训练:在计算机视觉领域,许多算法模型需要大量的图像数据进行训练。通过抽帧,可以从视频中获取大量的图像帧,用于训练如物体识别、行为分析等模型。
  3. 性能测试:抽帧可以用于测试视频处理算法的性能,比如检测算法处理高帧率视频的能力。通过对比不同库或方法在抽帧操作上的性能,可以选择最优的解决方案。
  4. 视频编辑:在视频编辑中,抽帧可以用来提取视频中的特定画面,用于制作静态图像或者创建视频摘要。

执行代码及解释

逐帧抽取
import cv2
import os

# 打开视频文件
video = cv2.VideoCapture('video.mp4')#视频位置与.py同一级

# 定义帧计数器
frame_count = 0

# 定义保存帧的文件夹路径
output_folder = 'Images'
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 逐帧读取视频
while True:
    # 读取下一帧
    ret, frame = video.read()

    # 如果读取失败(例如,达到视频末尾),则跳出循环
    if not ret:
        break

    # 将当前帧保存到指定文件夹,并使用递增的数字进行命名
    cv2.imwrite(os.path.join(output_folder, 'frame_{}.jpg'.format(frame_count)), frame)
    frame_count += 1

# 释放视频对象并关闭所有窗口
video.release()
cv2.destroyAllWindows()

每隔5帧抽取一帧
import cv2
import os

# 打开视频文件
video = cv2.VideoCapture('video.mp4')

# 定义帧计数器
frame_count = 0

# 定义保存帧的文件夹路径
output_folder = 'output_frames'
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 逐帧读取视频
while True:
    # 读取下一帧
    ret, frame = video.read()

    # 如果读取失败(例如,达到视频末尾),则跳出循环
    if not ret:
        break

    # 检查当前帧是否是5的倍数
    if frame_count % 5 == 0:
        # 将当前帧保存到指定文件夹,并使用递增的数字进行命名
        cv2.imwrite(os.path.join(output_folder, 'frame_{}.jpg'.format(frame_count // 5)), frame)
    frame_count += 1

# 释放视频对象并关闭所有窗口
video.release()
cv2.destroyAllWindows()

保存结果格式如下

在这里插入图片描述

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值