现在来学习如何将图片集写成视频文件吧。
先将图片集统一命名,然后通过一个变量来控制读取图片。
然后使用cvCreateVideoWriter()函数创建视频写设备,使用cvResize()函数将不同尺寸的图片调整成同一个尺寸,使用cvWriteFrame()函数将图片数据写入到视频写设备中。大概的思想就是这样了,好像也没有什么好说的,单纯的记录一下这个课时,以后也许会有延伸
#include "highgui.h"
#include "cxcore.h"
#include "cv.h"
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
CvSize size = cvSize(480,360);
double fps = 1;
//创建视频写设备
CvVideoWriter* writer = cvCreateVideoWriter(
"E:\\3\\liu.avi",
CV_FOURCC('X','V','I','D'),
fps,
size);
int image_id=0;//控制图片名称
char filename[256];
sprintf(filename, "E:\\3\\liu (%d).jpg",image_id);
IplImage* src = cvLoadImage(filename);//加载图像
if(!src)return 0;
IplImage* src_resize = cvCreateImage(size,8,3);//创建一个图像空间
cvNamedWindow("avi");
while(src)
{
cvShowImage("avi",src_resize);
cvWaitKey(10);
//由于图片的大小不一定都是size,所以在写入视频前,使用cvResize函数将图片调整成size大小,存放在src_resize中
cvResize(src, src_resize);
cvWriteFrame(writer,src_resize);//再将src_resize的内容加载到writer视频设备中
cvReleaseImage(&src);//释放
image_id++;
sprintf(filename,"E:\\3\\liu (%d).jpg",image_id);
src = cvLoadImage(filename);//将图片加载到src中
}
cvReleaseVideoWriter(&writer);
cvReleaseImage(&src_resize);
return 0;
}
重点介绍的函数
1、cvCreateVideoWriter(conts char* filename,//新建视频的文件名字
int fourcc,//视频压缩的编码格式(由电脑安装的编码器决定的)
double fps,//每秒播放的帧数
CvSize frame_size,//尺寸
int is_color=1//如果非零,编码器将希望得到彩色帧进行编码,否则是灰度帧
);//创建视频写设备
2、viod cvResize(const CvArr* src,//源图像
CvArr* dst,//目标图像
int interpolation=CV_INTER_LINEAR//方式
);//重新调整图像src
3、int cvWriteFrame(CvVideoWriter* writer,//视频写入器结构
const IplImage* image//被写入的帧
);//把一帧图像写入到视频文件