python tools实现视频的每一帧提取并保存


Posted in Python onMarch 20, 2020

Preface

最近在做 video caption 相关,要处理大量视频。

今天碰到一个问题,就是要将 YoutubeClips 数据集 中的 avi 格式的视频,将其视频中的每一帧提取出来。之后用 High accuracy optical flow estimation based on a theory for warping 提出的 Optical Flow(光流),提取运动的光流特征。

Method 1

方法 1 是最简单的,用 FFmpeg 工具来完成。

具体的网上有很多这方面的资料,本人只是简单了解了一下如何使用。如下图,有一个名为 ffmpeg_test.avi 的视频:

python tools实现视频的每一帧提取并保存

在当前目录打开终端,输入如下命令:

$ffmpeg -i ffmpeg_test.avi frames_%03d.jpg -hide_banner

以上我没有指定太多的参数,实际上有很多参数可以指定,如起止的时间,几秒钟取一帧等等。

输入即可获得每一帧。

Method 2

下面就是可以用 cv2 模块中的 VideoCapture、VideoWriter 来提取了,具体代码如下:

#! encoding: UTF-8

import os

import cv2
import cv

videos_src_path = '/home/ou-lc/chenxp/Downloads/Youtube/youtube_select'
videos_save_path = '/home/ou-lc/chenxp/Downloads/Youtube/youtube_frames'

videos = os.listdir(videos_src_path)
videos = filter(lambda x: x.endswith('avi'), videos)

for each_video in videos:
 print each_video

 # get the name of each video, and make the directory to save frames
 each_video_name, _ = each_video.split('.')
 os.mkdir(videos_save_path + '/' + each_video_name) 

 each_video_save_full_path = os.path.join(videos_save_path, each_video_name) + '/'

 # get the full path of each video, which will open the video tp extract frames
 each_video_full_path = os.path.join(videos_src_path, each_video)

 cap = cv2.VideoCapture(each_video_full_path)
 frame_count = 1
 success = True
 while(success):
 success, frame = cap.read()
 print 'Read a new frame: ', success

 params = []
 params.append(cv.CV_IMWRITE_PXM_BINARY)
 params.append(1)
 cv2.imwrite(each_video_save_full_path + each_video_name + "_%d.ppm" % frame_count, frame, params)

 frame_count = frame_count + 1

cap.release()

在最后,我将每一帧保存为 PPM 格式。因为我需要调用之前的 optical flow 论文中的 of 程序,来提取 optical flow image(光流图)。

保存时,根据 opencv 的 Doc:OpenCV 2.4.9 cv2.imwrite,其参数的指定方式如上。一开始在这里跌了好几个跟头,因为不知道如何将参数正确的指定。

Reference

http://stackoverflow.com/questions/33311153/python-extracting-and-saving-video-frames
http://stackoverflow.com/questions/12216333/opencv-imread-imwrite-increases-the-size-of-png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pymongo实现控制mongodb中数字字段做加法的方法
Mar 26 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
Python实现的双色球生成功能示例
Dec 18 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
ipad上运行python的方法步骤
Oct 12 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
Python内置异常类型全面汇总
May 28 Python
python支持多继承吗
Jun 19 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
Python reques接口测试框架实现代码
Jul 28 Python
python3操作redis实现List列表实例
Aug 04 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 #Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
May 31 #Python
Python可变和不可变、类的私有属性实例分析
May 31 #Python
python实现批量视频分帧、保存视频帧
May 31 #Python
Python内置random模块生成随机数的方法
May 31 #Python
Python模块、包(Package)概念与用法分析
May 31 #Python
python多线程下信号处理程序示例
May 31 #Python
You might like
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
js实现漫天星星效果
2017/01/19 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python人人网登录应用实例
2014/09/26 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
美国时尚假发购物网站:Wigsbuy
2019/04/06 全球购物
盛大笔试题
2016/11/05 面试题
求职信结尾怎么写
2014/05/26 职场文书
基层党支部整改方案
2014/10/25 职场文书
家长学校教学计划
2015/01/19 职场文书
企业党建工作总结2015
2015/05/26 职场文书
迎新年主持词
2015/07/06 职场文书
python如何做代码性能分析
2021/04/26 Python
Win11开始菜单添加休眠选项
2022/04/19 数码科技