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中使用 Selenium 实现网页截图实例
Jul 18 Python
详解python发送各类邮件的主要方法
Dec 22 Python
python实现决策树
Dec 21 Python
Python利用openpyxl库遍历Sheet的实例
May 03 Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 Python
python使用PIL模块获取图片像素点的方法
Jan 08 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 Python
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
Mar 29 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 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 生成随机验证码图片代码
2010/02/08 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
javascript 常用功能总结
2012/03/18 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
node中的session的具体使用
2018/09/14 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
python安装Scrapy图文教程
2017/08/14 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
python__name__原理及用法详解
2019/11/02 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
普通简短的个人自我评价
2014/02/15 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
继承公证书
2014/04/09 职场文书
医院护士工作检讨书
2014/10/26 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书