在做毕设时,需要将处理的图像结果编辑成视频的格式,用一些软件没有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); } */}
新闻热点
疑难解答