将图片序列压缩成视频

原文链接:http://blog.csdn.net/carson2005/article/details/7085480

     有些时候,我们确实需要将一个图片序列压缩成视频文件,从而方便观看,或者给别人展示等。本文的目的就是提供一种解决方法。首先,需要安装opencv和xvid。前者是图像处理,计算机视觉领域的一个开源库(可以参考这里:http://blog.csdn.net/carson2005/article/details/6979806);后者是一种广泛应用的开源视频编解码器(这里有个简单的介绍:http://blog.csdn.net/carson2005/article/details/6553867)。本文利用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.   
  9. int _tmain(int argc, _TCHAR* argv[])  
  10. {  
  11.     double fps = 5;//视频压缩帧率  
  12.     CvSize size = cvSize(200, 200);//图片序列中每张图片的宽高  
  13.     CvVideoWriter* writer = cvCreateVideoWriter("c:/ChenLeeTest.avi", CV_FOURCC('X','V','I','D'),  
  14.         fps, size);  
  15.   
  16.     char str[200];  
  17.     for (int i=0; i<360; i++)  
  18.     {  
  19.         memset(str, '\0', 200*sizeof(char));  
  20.         sprintf(str, "c:/result/%d.jpg", i);  
  21.   
  22.         IplImage* colorIn = cvLoadImage(str);  
  23.   
  24.         int flag = cvWriteFrame(writer, colorIn);   
  25.         cout<<flag<<endl;  
  26.   
  27.         cvReleaseImage(&colorIn);  
  28.     }  
  29.     cvReleaseVideoWriter(&writer);  
  30.   
  31.     system("pause");  
  32.     return 0;  
  33. }  

原文地址:https://www.cnblogs.com/java20130723/p/3212038.html