Learning opencv: 简单视频截图并保存

 

以下程度是把一个视频的所有的帧都保存起来。

 

我的一段6秒钟的视频保存了165个截图,有点惊讶。

 

#include "stdafx.h" #include "cv.h" #include "highgui.h" #include <stdlib.h> #include <string> #include <assert.h> using namespace std; const char* SAVE_DIR = "I://pic//"; char* get_file_name(const char* dir, int index, const char* format); int play_video_and_screen_shot(const char* filename) { int shot_num = 0; //open a video file CvCapture* capture = cvCreateFileCapture( filename ); //catch every query frame while(1) { //get frame IplImage* frame = cvQueryFrame( capture ); if( !frame ) break; shot_num++; //save frame to destination directory cvSaveImage(get_file_name(SAVE_DIR,shot_num,"jpg"),frame); } return shot_num; } char* get_file_name(const char* dir, int index, const char* format) { assert(index >= 0); //convert the index to char char* id = new char[256]; itoa(index,id,10); string dir_str(dir); string idx_str(id); string format_str(format); string fn_str = dir_str + idx_str + '.' + format_str; if(fn_str.length() == 0) return NULL; char* fn = new char[fn_str.length()]; strcpy(fn,fn_str.data()); return fn; } 

你可能感兴趣的:(String,video,File,query)