算是转载吧,借鉴了别人写的程序,自己修改了一下。
//本程序的目的是合并图片到avi
#include <cv.h>
#include <highgui.h>
using namespace cv;
#include <iostream>
using namespace std;
int main()
{
int num = 0;
char name[100];
sprintf(name, "input/blue_rotate2_550x413_%05d.jpg", num);//加载图片的文件夹,图片的名称编号从0开始
IplImage *src = cvLoadImage(name);
if (!src)
return -1;
CvSize size = cvSize(src->width, src->height);
IplImage *src_resize = cvCreateImage(size,8,3);//创建视频文件格式大小的图片
double fps = 30;//每秒钟的帧率
CvVideoWriter *writer = cvCreateVideoWriter("output/test.avi", CV_FOURCC('D', 'I', 'V', 'X'), fps, size);//创建视频文件
//同等数量的图片,divx比mjpg要小。
cvNamedWindow("avi");
while (src)
{
cvShowImage("avi", src_resize);
cvWaitKey(33);
cvResize(src, src_resize);//将读取的图片设置为视频格式大小相同
cvWriteFrame(writer, src_resize);//保存图片为视频流格式
cvReleaseImage(&src);//释放空间
num++;
sprintf(name, "input/blue_rotate2_550x413_%05d.jpg",num);
src = cvLoadImage(name);//循环读取数据
}
cvReleaseVideoWriter(&writer);
cvReleaseImage(&src_resize);
cvDestroyWindow("avi");
return 0;
}
请注意,cvCreateVideoWriter的第二个参数决定编码格式,sprintf中的%05d表示数字是五位,不足五位补0。其他的就没什么了。