首页 > 代码库 > OpenCV---图片生成视频
OpenCV---图片生成视频
/** It is a batch processing interface. */ #include "stdafx.h" #include <windows.h> #include <Shlwapi.h> #include <iostream> #include <string> #include <vector> #include <opencv.hpp> #pragma comment(lib,"shlwapi.lib") //注意放置的位置 using namespace std; using namespace cv; /****************************************** func:findfile decs:find all file name in a directory @param dir the aerial image set directory @param fileset image file name set in the 'dir' @return null ******************************************/ void findFile(string dir,vector<string> &fileset) { WIN32_FIND_DATAA stFD ; //存放文件信息的结构体 HANDLE h; string temp; temp=dir+"\\*"; h=FindFirstFileA(temp.c_str(),&stFD); //构建目录句柄 while(FindNextFileA(h,&stFD)) //提取目录句柄对应目录所包含的文件 { temp=dir+"\\"+stFD.cFileName; if(temp==dir+"\\..") //上一级路径 { continue; } else if(PathIsDirectoryA(temp.c_str()) ) //包含子目录 { findFile(temp,fileset); //递归调用 } else { //cout<<stFD.cFileName<<endl; //打印文件名 fileset.push_back(stFD.cFileName); } } return ; } /****************************************** func:make_video decs:generate video based on image set @param dir the image set path @param videoPath video path @param frameRate frame rate @param return null ******************************************/ void make_video(string dir, string videoPath,int frameRate) { vector<string> fileset; Size frameSize; VideoWriter writer; findFile(dir,fileset); vector<string>::iterator it=fileset.begin(); string filename; while(it!=fileset.end()) { cout<<"---------------------------------------------"<<endl; filename=dir+*it; cout<<filename<<endl; it++; Mat frame; frame = imread(filename); // 读入图片 if (!writer.isOpened()) { frameSize.width = frame.cols; frameSize.height = frame.rows; if (!writer.open("matching_video.avi", CV_FOURCC('D','I','V','X') , frameRate, frameSize, true)) { cout << "open writer error..." << endl; return -1; } } // 将图片数据写入 writer.write(frame); // 显示 imshow("video", frame); waitKey(frameRate); } return; } int main(void) { string dir,videoPath; int frameRate; //dir=".\\shan_xi_aerial\\"; //dir="E:\\pic\\shan_xi_aerial\\"; dir="D:\\我的文档\\Documents\\Visual Studio 2010\\Projects\\speed_sift\\speed_sift\\result\\"; videoPath="matching_video.avi"; frameRate=25; make_video(dir,videoPath,frameRate); cout<<"Generate video \""<<videoPath<<"\" OK!!!"<<endl; system("pause"); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。