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中的对象拷贝示例 python引用传递
Jan 23 Python
python访问类中docstring注释的实现方法
May 04 Python
Python实时获取cmd的输出
Dec 13 Python
详解python发送各类邮件的主要方法
Dec 22 Python
python读写json文件的简单实现
Apr 11 Python
浅谈Python Opencv中gamma变换的使用详解
Apr 02 Python
Python求解任意闭区间的所有素数
Jun 10 Python
python的常用模块之collections模块详解
Dec 06 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
Python虚拟环境virtualenv是如何使用的
Jun 20 Python
Python可视化学习之seaborn调色盘
Feb 24 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中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
window下eclipse安装python插件教程
2017/04/24 Python
python中 logging的使用详解
2017/10/25 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
python3实现绘制二维点图
2019/12/04 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
Python如何生成xml文件
2020/06/04 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
python接入支付宝的实例操作
2020/07/20 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
Java程序员综合测试题
2014/04/25 面试题
单位刻章介绍信范文
2014/01/11 职场文书
幼儿园小班评语
2014/04/18 职场文书
小学一年级学生评语
2014/04/22 职场文书
如何写早恋检讨书
2014/09/10 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
Django REST framework 限流功能的使用
2021/06/24 Python
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫