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在线运行代码助手
Jul 15 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Python中的日期时间处理详解
Nov 17 Python
Python Flask基础教程示例代码
Feb 07 Python
python中验证码连通域分割的方法详解
Jun 04 Python
django连接mysql配置方法总结(推荐)
Aug 18 Python
Python、 Pycharm、Django安装详细教程(图文)
Apr 12 Python
python实现websocket的客户端压力测试
Jun 25 Python
基于pygame实现童年掌机打砖块游戏
Feb 25 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
python多线程爬取西刺代理的示例代码
Jan 30 Python
粗暴解决CUDA out of memory的问题
May 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操作redis数据库常见方法实例总结
2020/02/20 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
用方法封装javascript的new操作符(一)
2010/12/25 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
javascript每日必学之继承
2016/02/23 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
jQuery设计思想
2017/03/07 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
PyQt实现计数器的方法示例
2021/01/18 Python
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
华为的Java面试题
2014/03/07 面试题
个人自我鉴定总结
2014/03/25 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
操行评语大全
2014/04/30 职场文书
机关搬迁方案
2014/05/18 职场文书
关于环保的标语
2014/06/13 职场文书
个人贷款收入证明
2014/10/26 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
《植树问题》教学反思
2016/03/03 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python