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正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
Django中处理出错页面的方法
Jul 15 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
python实现k-means聚类算法
Feb 23 Python
python爬取微信公众号文章
Aug 31 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
简单了解django文件下载方式
Feb 10 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
Python深度学习之Pytorch初步使用
May 20 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+Html+缓存
2006/12/20 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
微信支付的开发流程详解
2016/09/13 PHP
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
Python中sort和sorted函数代码解析
2018/01/25 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
聘任书模板
2014/03/29 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
学生打架检讨书
2014/10/20 职场文书
2015年春节标语口号
2014/12/09 职场文书
体育个人工作总结
2015/02/09 职场文书
升职自我推荐信范文
2015/03/25 职场文书
大学推普周活动总结
2015/05/07 职场文书
2016新教师培训心得体会范文
2016/01/08 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
Python中异常处理用法
2021/11/27 Python
python实现会员管理系统
2022/03/18 Python
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技