有些时候,我们确实需要将一个图片序列压缩成视频文件,从而方便观看,或者给别人展示等。本文的目的就是提供一种解决方法。首先,需要安装opencv和xvid。前者是图像处理,计算机视觉领域的一个开源库(可以参考本文利用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;
- }