原文链接: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。下面给出参考代码,仅供参考;
- // VideoWriter.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include "cv.h"
- #include "highgui.h"
- #include "iostream"
- using namespace std;
- int _tmain(int argc, _TCHAR* argv[])
- {
- double fps = 5;//视频压缩帧率
- CvSize size = cvSize(200, 200);//图片序列中每张图片的宽高
- CvVideoWriter* writer = cvCreateVideoWriter("c:/ChenLeeTest.avi", CV_FOURCC('X','V','I','D'),
- fps, size);
- char str[200];
- for (int i=0; i<360; i++)
- {
- memset(str, '\0', 200*sizeof(char));
- sprintf(str, "c:/result/%d.jpg", i);
- IplImage* colorIn = cvLoadImage(str);
- int flag = cvWriteFrame(writer, colorIn);
- cout<<flag<<endl;
- cvReleaseImage(&colorIn);
- }
- cvReleaseVideoWriter(&writer);
- system("pause");
- return 0;
- }