#include <iostream>
#include <vector>
#include "opencv2\highgui\highgui.hpp"
using namespace std;
using namespace cv;
void video2image(string video,string path)
{
VideoCapture capture(video);
if(!capture.isOpened())
{
cerr<<"Failed to open a video"<<endl;
return ;
}
Mat frame;
int num=1;
string filename;
char temp_file[5];
for(;;)
{
capture>>frame;
if(frame.empty())
break;
sprintf(temp_file,"%06d",num);//每张图片前缀由六个字符构成,不够六个字符的前面用0补完整
filename = temp_file;
cout<<temp_file<<endl;
filename = path+filename+".jpg";
num++;
imwrite(filename,frame);
}
capture.release();
}
//假定图像集已经按帧号顺序排列
void images2video(string _Imagespath,string &_videoTosave)
{
int numframes = 120; //需要合成视频的帧数
int fourcc = CV_FOURCC('D','I','V','X'); //编解码类型
double fps = 30;
bool iscolor = true;
int frameWidth = 160; //帧宽度
int frameHeight= 120; //帧高度
VideoWriter Writer;
Writer = VideoWrit
C++ 视频转换成图片
最新推荐文章于 2023-09-14 14:56:55 发布
这个C++程序用于将视频文件转换为.jpg格式的图片序列,并可以将这些图片重新组合成视频。代码中定义了两个主要函数video2image()和images2video(),分别完成视频到图片的转换和图片到视频的合成。程序使用OpenCV库,通过VideoCapture和VideoWriter类进行操作。转换过程中,图片的名称由帧号生成,确保顺序正确。


837

被折叠的 条评论
为什么被折叠?



