python tools:将视频的每一帧提取并保存
2016-11-21 23:37
441 查看
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的视频:
在当前目录打开终端,输入如下命令:
$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://www.bugcodemaster.com/article/extract-images-frame-frame-video-file-using-ffmpeghttp://stackoverflow.com/questions/33311153/python-extracting-and-saving-video-frames
http://stackoverflow.com/questions/12216333/opencv-imread-imwrite-increases-the-size-of-png
相关文章推荐
- OpenCV入门七:OpenCV打开视频文件,并对其中的每一帧图像进行Canny算子边缘化提取,并将结果保存为视频文件
- OpenCV提取视频中的每一帧sobel化保存到本地
- 京东猪脸识别比赛数据预处理:用Python将视频每一帧提取存储为图片
- OpenCV学习之视频读取与帧的提取、显示及保存
- MATLAB读取图像的每一帧处理之后保存成视频文件
- 提取视频每一帧
- opencv for python学习一之保存视频
- Python保存/提取数据的方法
- Python提取pps文件中的音乐或视频
- OpenCV学习之视频读取与帧的提取、显示及保存
- 【python下使用OpenCV实现计算机视觉读书笔记4】保存摄像头视频
- opencv2读取视频提取ROI区域并把ROI区域保存为图片
- 对一个现成的ts进行pat和pmt表的解析,并提取视频保存到文件中
- 提取邮件(eml格式)保存为html-python
- 读取视频中的每一帧并保存图片
- 如何使用matlab从视频中提取出一帧帧图像
- opencv提取视频每一帧
- 【python下使用OpenCV实现计算机视觉读书笔记4】保存摄像头视频
- opencv中读取视频每一帧并且单独保存
- OpenCV之视频读取与帧的提取、显示及保存