转载请注明:http://blog.csdn.net/ding977921830/article/details/50950927
-
- #include <opencv2/core/core.hpp>
- #include <opencv2\highgui\highgui.hpp>
- #include <iostream>
- #include <direct.h>//for mk_dir
- #include <io.h>//for _acess()
- using namespace cv;
- using namespace std;
-
- int recursive_mkdir( char *dir );
- int ImageToVideo(char* outDir,char* videoName,char* inputDir,int startFrame,int endFrame, int imgW,
- int imgH,char* imgExt,double fps,int isColor,int fourcc);
-
-
- int main(int argc, char** argv)
- {
- char* inputDir="F:\\论文视频库\\视频帧库\\Walking\\";
- char* videoName="Walking.avi";
- char* outDir="F:\\论文视频库\\视频帧库\\Walking\\";
-
- int startFrame = 20;
- int endFrame = 412;
- int imgW = 768;
- int imgH = 576;
- char* imgExt = ".jpg";
-
- double fps=24;
- int isColor=1;
- int fourcc=CV_FOURCC('X','V','I','D');
-
-
- IplImage *pImg=NULL;
- char cur_fn[255];
- char fullVideoName[255];
- int frameCount = startFrame;
- CvVideoWriter *pWriter=NULL;
- CvSize size=cvSize(imgW,imgH);
-
-
- if (_access(inputDir,0)==-1)
- {
- cout<<"the input directory does not exist!"<<endl;
- return 0;
- }
-
-
- strcpy_s(fullVideoName,"");
- if (outDir==NULL)
- {
- sprintf_s(fullVideoName,"%s",videoName);
- }
- else
- {
- if (_access(outDir,0)==-1)
- {
- recursive_mkdir(outDir);
- }
- sprintf_s(fullVideoName,"%s%s",outDir,videoName);
- }
-
- pWriter=cvCreateVideoWriter(videoName,fourcc,fps,size,isColor);
-
- while(startFrame<=endFrame)
- {
- strcpy_s(cur_fn,"");
- sprintf_s(cur_fn,"%s%d%s",inputDir,startFrame,imgExt);
- pImg=cvLoadImage(cur_fn,isColor);
-
- if (!pImg)
- {
- std::cout<<"can't open an image file"<<std::endl;
-
- }
- Mat mtx(pImg);
- namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
- imshow("MyWindow", mtx);
- cout<<"运行到第 "<< frameCount<<" 帧 ";
-
- waitKey(10);
-
-
- cvWriteFrame(pWriter,pImg);
- cvWaitKey(1);
- std::cout<<"Write frame "<<startFrame<<std::endl;
- startFrame++;
- cvReleaseImage(&pImg);
- frameCount++;
- }
-
- rename(videoName,fullVideoName);
-
- std::cout<<"total frames "<<frameCount<<" have been write to video."<<std::endl;
-
- system("pause");
-
- return 0;
- }
-
-
- int recursive_mkdir( char *dir )
- {
-
-
- std::string str = dir;
- int index = 0;
- int i = 0;
- while(1)
- {
- std::string::size_type pos = str.find("\\",index);
- std::string str1;
- str1 = str.substr(0,pos);
- if( pos != -1 && i > 0 )
- {
- if (_access(str1.c_str(),0)==-1)
- {
- _mkdir(str1.c_str());
- }
- }
- if( pos==-1 )
- {
- break;
- }
- i ++;
- index = pos+1;
- }
- return 0;
- }
-
参考文献:
http://blog.csdn.net/sway_2012/article/details/7786465