有些时候,我们确实需要将一个图片序列压缩成视频文件,从而方便观看,或者给别人展示等。本文的目的就是提供一种解决方法。首先,需要安装opencv和xvid。前者是图像处理,计算机视觉领域的一个开源库(可以参考本文利用opencv主要是从事一些图片文件的解压(jpg文件解压)和文件读取工作,当然,如果你的图片源是bmp这种非压缩格式,也可以不用opencv。下面给出参考代码,


  1. // VideoWriter.cpp : 定义控制台应用程序的入口点。  
  2. //  
  3. #include "stdafx.h"  
  4. #include "cv.h"  
  5. #include "highgui.h"  
  6. #include "iostream"  
  7. using namespace std;  

  8. int _tmain(int argc, _TCHAR* argv[])  
  9. {  
  10.     double fps = 5;//视频压缩帧率  
  11.     CvSize size = cvSize(200, 200);//图片序列中每张图片的宽高  
  12.     CvVideoWriter* writer = cvCreateVideoWriter("c:/ChenLeeTest.avi", CV_FOURCC('X','V','I','D'),  
  13.         fps, size);  

  14.     char str[200];  
  15.     for (int i=0; i<360; i++)  
  16.     {  
  17.         memset(str, '\0', 200*sizeof(char));  
  18.         sprintf(str, "c:/result/%d.jpg", i);  

  19.         IplImage* colorIn = cvLoadImage(str);  

  20.         int flag = cvWriteFrame(writer, colorIn);   
  21.         cout<<flag<<endl;  

  22.         cvReleaseImage(&colorIn);  
  23.     }  
  24.     cvReleaseVideoWriter(&writer);  

  25.     system("pause");  
  26.     return 0;  
  27. }