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 相关文章推荐
python 实现一个贴吧图片爬虫的示例
Oct 12 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
scrapy-redis的安装部署步骤讲解
Feb 27 Python
Python面向对象程序设计之类的定义与继承简单示例
Mar 18 Python
在django view中给form传入参数的例子
Jul 19 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
Dec 13 Python
PyCharm第一次安装及使用教程
Jan 08 Python
python离线安装外部依赖包的实现
Feb 13 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
Apr 13 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脚本数据库功能详解(中)
2006/10/09 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
python实现的阳历转阴历(农历)算法
2014/04/25 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
生日主持词
2014/03/20 职场文书
开学典礼策划方案
2014/05/28 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
个人年度总结报告
2015/03/09 职场文书
《包身工》教学反思
2016/02/23 职场文书
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers