首页 > 代码库 > Duanxx的OpenCV学习:图片转化为视频
Duanxx的OpenCV学习:图片转化为视频
前面我说明了一下Opencv的视频转图片的方式和代码,这次要说明的是Opencv如何将图片转化为视频:
本文完整代码下载
1 VideoWriter说明
这里主要用到的是Opencv里的一个类:VideoWriter
其API参考链接:API链接。
函数原型:
VideoWriter::VideoWriter(const string& filename, int fourcc, double fps, Size frameSize, bool isColor=true)
参数说明:
filename : 是输出的视频文件的名字,比如:“out.avi”
fourcc : 是编码的方式,它是用四个字符定义的编码方式,编码方式参考链接: 编码方式参考
这里需要说明的是,这个值使用CV_FOURCC定义的,比如:CV_FOURCC(‘P‘,‘I‘,‘M‘,‘1‘)指的是 MPEG-1编码
fps : 视频的帧率
framSize :视频的大小
2 图片写入视频的方式
图片写入视频主要是两种方式:
1:调用write函数
2:流操作符 <<
C++: VideoWriter& VideoWriter::operator<<(const Mat& image) C++: void VideoWriter::write(const Mat& image)
3 主要代码示例
///< 视频的部分参数 int width = 0, height = 0, fps = 0, fourcc = 0; Mat frame;///<图像帧 int frameCounter = 0; ///<图像帧的计数器 namedWindow(windows_name_original); ///<读取第一张图片,得到图像的宽高,并设置fps和编码方式 string frameName = nameGenerate(frameCounter); frame = imread(frameName); width = frame.cols;///<获得图像的宽和高 height = frame.rows; fps = 15;///<fps为15 fourcc = CV_FOURCC('X','V','I','D');///<设置图像的编码方式 cout<<width<<endl<<height<<endl; ///<定义一个视频写入器,编码方式avi VideoWriter video; video.open("out.avi",fourcc,fps,cvSize(width,height)); if (!video.isOpened()) { cout<<"video is not open "<<endl; return 0; } ///<读取图片并写入到视频文件中 for(;frameCounter<=405;frameCounter++) { string frameName = nameGenerate(frameCounter);///<根据视频帧的计数器 ///<生成图像的文件名 frame = imread(frameName);///<读取图像 if (frame.empty()) { cout<<endl<<"image Empty"<<endl; return 0; } video<<frame;///<图像写入到视频帧中 cout<<frameName<<endl; imshow(windows_name_original,frame); waitKey(50); }
Duanxx的OpenCV学习:图片转化为视频
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。