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中的推导式使用详解
Jun 03 Python
解析Python中while true的使用
Oct 13 Python
Python的Flask开发框架简单上手笔记
Nov 16 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
使用Selenium破解新浪微博的四宫格验证码
Oct 19 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
在Python中通过threshold创建mask方式
Feb 19 Python
python 子类调用父类的构造函数实例
Mar 12 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
Python类和实例的属性机制原理详解
Mar 21 Python
Virtualenv 搭建 Py项目运行环境的教程详解
Jun 22 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设计模式小结
2013/02/15 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
2018/09/01 Javascript
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
python通过索引遍历列表的方法
2015/05/04 Python
python实现学生管理系统
2018/01/11 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
python3多线程知识点总结
2019/09/26 Python
python线程信号量semaphore使用解析
2019/11/30 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
送给他或她的礼物:FUN.com
2018/08/17 全球购物
护士见习期自我鉴定
2014/02/08 职场文书
2014小学植树节活动总结
2014/03/10 职场文书
财务负责人任命书
2014/06/06 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
银行自荐信怎么写
2015/03/05 职场文书
庆七一晚会主持词
2015/06/30 职场文书
python+opencv实现目标跟踪过程
2022/06/21 Python