当前位置: 首页 > article >正文

读取视频指定帧的方式

一、通过opencv

import random
import cv2
VideoPath = ''
vc = cv2.VideoCapture(VideoPath )    #读入视频文件
#获取视频文件总帧数,并产生在总帧数范围内的随机数
NumFrames = int(vc.get(cv2.CAP_PROP_FRAME_COUNT))   #获取视频的总帧数
n = random.randint(1,NumFrames)                 #生成1~总帧数范围内的一个随机整数
#按照随机数提取图像,并将图像存放到原视频存放路径,名字以视频文件名命名,后缀为'.jpg'格式
vc.set(cv2.CAP_PROP_POS_FRAMES, n) # 截取指定帧数
rval,frame = vc.read()      # 分帧读取视频
cv2.imencode('.jpg',frame )[1].tofile('cv_img.jpg')

二、通过decord

import random
from decord import VideoReader, cpu

vr = VideoReader(video_path, ctx=cpu(0))
## 获取视频总帧数
NumFrames = vr._num_frame
n = random.randint(1,NumFrames)#生成1~总帧数范围内的一个随机整数
## 转成numpyg格式。读取的视频帧是RGB格式
frame = vr[index].asnumpy()
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
save_path = os.path.join("img_decord.jpg")
cv2.imwrite(save_path, frame)

三、速度对比

速度为读取一帧图像耗时

方式速度
opencv0.8s
decord0.2s

四、参考链接

decord的github链接


http://www.kler.cn/news/366748.html

相关文章:

  • TensorFlow面试整理-模型部署与优化
  • <项目代码>YOLOv8煤矿输送带异物识别<目标检测>
  • Spring Cloud微服务:构建现代应用的新基石
  • SAP_SD模块-销售订单创建价格扩大10倍问题分析及后续订单价格批量更新问题处理
  • 文本预处理——构建词云
  • [CSP-J 2023] 一元二次方程(模拟)
  • Qt中使用线程之moveToThread
  • Maven 不同环境灵活构建
  • spring-boot-starter-data-redis
  • electron 打包
  • webGL是前端开发的天花板,3D可视化大屏还在天花板以上。
  • 【iOS】使用AFNetworking更方便实现网络请求
  • 大厂项目经理推荐的10款常用的项目管理软件值得你收藏
  • Linux安装Nginx教程(rpm安装方式)
  • 全栈面试题】模块3-9】JavaSE高级 -- Object类、 GC、反射、Socket
  • 2024.10.23华为笔试题解
  • vue文件转AST,并恢复成vue文件(适用于antdv版本升级)
  • git清理本地.git文件夹下的缓存
  • Adobe Media Encoder--将可变帧率视频转为固定帧率
  • 用Python实现中文分词
  • #网络安全#渗透测试# 渗透测试应用
  • centos安装指定版本的jenkins
  • 全WEB端支持H.265,RTSP/RTMP/FLV视频流4k超清播放器方案
  • 三款PDF解密工具,轻松打开加密文档
  • 第11天理解指针
  • Go小技巧易错点100例(十八)