在做毕设时,需要将处理的图像结果编辑成视频的格式,用一些软件没有OpenCV编程来的快。代码如下:
主要是读入图像序列,设置好帧率和视频编码器格式,还有分辨率就可以完成录制。
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
//声明IplImage指针
IplImage* Image = NULL;
CvVideoWriter* video = cvCreateVideoWriter("depth2.avi", 0, 10, cvSize(512, 424), 1);
char filename[200];//保存图像名的数组
for (int m = 2; m < 147; m++) //图像命名规则为00*.png
{
sprintf(filename, "C:\\Users\\Haley Xu\\Documents\\Visual Studio 2013\\Projects\\kinect2\\kinect2\\cljg_2\\depth%d.bmp", m);
Image = cvLoadImage(filename);
cvShowImage("读取", Image);
cvWriteFrame(video, Image);
char c = cvWaitKey(150);
if (c == 27) break;//按下ESC停止
}
cvReleaseVideoWriter(&video);
/*
char filename[200];
VideoWriter videoWriter;//视频写入器
videoWriter.open("freespaceAndObstacles.avi", CV_FOURCC('x', 'v', 'I', 'D'), 25, Size(1024, 333));//注意若图片尺寸与写入器的尺寸不同的话可能失败
if (!videoWriter.isOpened())
std::cout << "创建VideoWriter失败" << std::endl;
for (int m = 1; m < 250; m++)
{
sprintf(filename, "E:\\img\\%d.bmp", m);
cv::Mat img = cv::imread(filename);
img.convertTo(img,CV_8UC3);
imshow("freespaceAndObstacles",img);
videoWriter << img;//写入一帧到文件
waitKey(100);
}
*/
}