opencv 多组图片 合成视频动画avi

首先 下载编码器:XviD-1.1.3 (视频编码器)

 

编写程序代码:

#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <opencv\cxcore.h>
#include <stdlib.h>
#include <stdio.h>
 

 
int main(int argc, char* argv[])
 
{
 
CvSize size = cvSize(480,360);
 
double fps = 15;
 

//创建一个写视频 设备writer 
CvVideoWriter* writer = cvCreateVideoWriter("d:\\out.avi",CV_FOURCC('X','V','I','D'),fps,size);
 


/*读入一个文件夹下的所以图片*/
 
int image_id = 0;
 
char filename[256];
 

sprintf(filename , "C:\\Users\\zxl\\Desktop\\Image\\%d.jpg" , image_id );
 

//加载图像
 
IplImage* src = cvLoadImage(filename);
 

if(!src)
 
{
 
return 0;
 
}
 

//为resize后的图像分配空间
 
IplImage* src_resize = cvCreateImage(size,8,3);
 


cvNamedWindow("avi");
 

while(src)
 
{
 
/*显示图像 本步骤不是必须的*/
 
cvShowImage("avi",src_resize);
 
cvWaitKey(1);
 

/*resize图像 使得写入视频文件的图像src_resize 与 视频文件的宽 高 是一样的 视频文件的宽 高是CvSize size = cvSize(480,360);*/
 
cvResize(src , src_resize);
 

/*将图像src_resize 写入到视频设备writer*/
 
cvWriteFrame(writer , src_resize);
 

/*释放内存空间*/
 
cvReleaseImage(&src);
 

//加载文件夹中的下一幅图像 
image_id++;
 
sprintf(filename , "C:\\Users\\zxl\\Desktop\\Image\\%d.jpg" , image_id );
 
src = cvLoadImage(filename);
 



}
 

/*释放写设备*/
 
cvReleaseVideoWriter(&writer);
 

/*释放图像空间*/
 
cvReleaseImage(&src_resize);
 

return 0;
 
}


 

你可能感兴趣的:(opencv 多组图片 合成视频动画avi)