以下这段代码的功能是将指定文件夹下的所有图片合并成一个视频文件。具体步骤如下:
- 读取指定文件夹下的所有图片文件,并将它们存储在一个vector中。
- 创建一个VideoWriter对象,用于将图片写入到视频文件中。
- 获取第一张图片的帧率、宽度和高度,并将所有图片的尺寸缩小一半。
- 打开VideoWriter对象,设置编码格式为DIVX,帧率为1,分辨率为缩小后的尺寸,并设置为彩色输出。
- 遍历所有图片,将每张图片缩小一半后写入到VideoWriter对象中。
- 当所有图片都写入完成后,释放VideoWriter对象。
void vedio(string wenjian)
{//读取文件夹下所有图片
string filename;
filename = "wenjian";
vector<string>imageList;
glob(filename, imageList);
vector<Mat>images;
for (int i = 0; i < imageList.size(); i++)
{
Mat imgs = imread(imageList[i]);
images.push_back(imgs);
}
Mat img;
cv::VideoWriter output_video;//用来将图片写入到视频
img = images[0];
int video_fps = 1; //获取帧率
int width = img.cols;//获取图像宽
int height = img.rows;//获取图像高
resize(img, img, Size(width / 2, height / 2));
output_video.open(pic_vedio, cv::VideoWriter::fourcc('D', 'I', 'V', 'X'),
video_fps, cv::Size(width / 2, height / 2), true);
for (int i = 0; i < images.size(); i++)
{
Mat imge;
resize(images[i], imge, Size(width / 2, height / 2));
if (imge.empty())
{
cout << "图片读取结束" << endl;
break;
}
output_video.write(imge);
}
output_video.release();
}