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 相关文章推荐
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
Python中用pycurl监控http响应时间脚本分享
Feb 02 Python
Python连接PostgreSQL数据库的方法
Nov 28 Python
Python中动态创建类实例的方法
Mar 24 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
Jun 12 Python
python输出结果刷新及进度条的实现操作
Jul 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
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
Yii rules常用规则示例
2016/03/15 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
JS的get和set使用示例
2014/02/20 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
python实现LRU热点缓存及原理
2019/10/29 Python
Django配置文件代码说明
2019/12/04 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
英语专业学生个人求职信
2014/01/28 职场文书
工作违纪检讨书
2014/02/17 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
职工培训工作总结
2015/08/10 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
小学班主任研修日志
2015/11/13 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书