opencv把图片序列保存为视频
1,简介
opencv不仅把一段视频抽成一帧一帧的图片,还可以把连续的图片保存为一段视频,可以很方便的满足我们的需求,下面介绍如何把图片序列保存为视频。
2,opencv 把连续帧的图片保存为视频
#include <fstream>
#include <sstream>
#include <iostream>
#include <opencv2/opencv.hpp>
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
using namespace std;
int main(){
cv::Mat frame;
static const std::string kWinName = "Multiple Object Tracking";
//创建一个opencv显示的窗口
namedWindow(kWinName, cv::WINDOW_NORMAL);
//图片的命名格式为000001.jpg的这种格式
string frame_file="/path/to/your/Pictures/tupian/00%04d.jpg";
//加载路径下的的图片
cv::VideoCapture cap(frame_file);
//创建一个VideoWriter,用来生成视频文件
cv::VideoWriter write;
//生成的视频的名字
string outVideo="show_video.mp4";
//获取视频的帧率
double fps=cap.get(cv::CAP_PROP_FPS);
//获取视频的分辨率,也就是图片的宽高
int height = static_cast<int>(cap.get(cv::CAP_PROP_FRAME_HEIGHT));
int width = static_cast<int>(cap.get(cv::CAP_PROP_FRAME_WIDTH));
//打开一个以MJPG的格式,fps的帧率的文件,用来写入生成视频
write.open(outVideo, cv::VideoWriter::fourcc('M','J','P','G'), fps, cv::Size(width, height), true);
for(;;){
//获取一帧图片
cap>> frame;
//把这一帧图片写入视频
write.write(frame);
//imshow(cv::frame);
cv::waitKey(10);
}
//结束后释放cap和write
cap.release();
write.release();
return 0;
}
上面就是如何使用opencv把连续的图片序列保存为视频的方法!!