OpenCV学习笔记:序列图片生成视频流方法
来源:互联网 发布:开淘宝快递费怎么解决 编辑:程序博客网 时间:2024/05/16 13:10
方法一:代码一在opencv2.4.3,VS2010上测试正常
目前,OpenCV只支持avi的格式,而且生成的视频文件不能大于2GB,而且不能添加音频。
将图片序列合成视频流,主要用到VideoWriter类,这个类是highgui中很重要的一个工具类,通过它我们可以很方便的将图片序列保存成视频文件。
类内成员函数有构造函数,open,isOpened,write等
int main(){//图像序列提取路径char filename[100];Mat source_img;//已处理帧序列计数int frame_cnt = 1;//初始化视频编写器,参数根据实际视频文件修改VideoWriter writer("E:\\dest\\mark.avi",CV_FOURCC('X','V','I','D'),25.0, Size(512,512), 1 );namedWindow("mark_win");//NUM_FRAME为需处理的图片序列总数while( frame_cnt != NUM_FRAME ){sprintf( filename, "E:\\source\\img%04d.jpg", frame_cnt );source_img = imread( filename, 1 );if( source_img.empty() ){cout<<"can not read filename's img"<<endl;return -1;}writer << source_img;imshow( "mark_win", source_img );if( waitKey(1)==27 ){break;}++frame_cnt;}return 0;}
VideoWriter构造函数参数分别是:文件的名称,格式,帧率,分辨率大小,是否彩色。
其他支持格式有:
CV_FOURCC('P', 'I', 'M', '1') = MPEG-1 codec
CV_FOURCC('M', 'J', 'P', 'G') = motion-jpeg codecCV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') = H263 codec
CV_FOURCC('I', '2', '6', '3') = H263I codec
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec
方法二:早期opencv版本
直接上代码:
int main(int argc, char* argv[]){ system("dir /b img > filelist.txt"); ifstream imglist("filelist.txt"); string buf; int numline=0; while(imglist) { if(getline(imglist,buf)) { numline++; } } imglist.close(); string open_dir="img/"; IplImage *frame=cvLoadImage(open_dir.append("1.jpg").c_str()); if(!frame) return; CvVideoWriter *videoWriter=cvCreateVideoWriter("avi/peng.avi",-1,30,cvSize(frame->width,frame->height)); if(!videoWriter) return; int ret=0; ret=cvWriteFrame(videoWriter,frame); if(ret!=1) { cout<<"failed to write the first frame."<<endl; return; } cvReleaseImage(&frame); frame=NULL; for(int i=1;i<numline;i++) { open_dir="img/"; cout<<"processing...img/"<<(i+1)<<".jpg"<<endl; char filename[256]; sprintf(filename,"img/%d.jpg",(i+1)); frame=cvLoadImage(filename); if(!frame) { cout<<"can not open the image: "<<filename<<endl; return; } ret=cvWriteFrame(videoWriter,frame); if(ret!=1) { cout<<"can not write to the video."<<endl; return; } cvReleaseImage(&frame); frame=NULL; } cout<<"processing...completed"<<endl;/* cvReleaseImage(&frame);*/ cvReleaseVideoWriter(&videoWriter);return 0;}
部分内容引自http://blog.csdn.net/yang_xian521/article/details/7440190
0 0
- OpenCV学习笔记:序列图片生成视频流方法
- opencv 之图片序列生成视频
- OpenCV 视频与图片序列相互转换 VideoWriter生成视频流
- OpenCV 视频与图片序列相互转换 VideoWriter生成视频流
- 【OpenCV学习笔记 013】处理视频序列
- OpenCV---图片生成视频
- OpenCV学习笔记——VideoWriter生成视频流highgui
- 基础学习笔记之opencv(6):实现将图片生成视频
- opencv图片序列合成视频
- OpenCV学习笔记(5):把图像序列写成视频
- opencv学习笔记三 视频处理序列(1)读取视频序列
- OpenCV学习笔记04--图片和视频的保存
- opencv学习笔记(五)-将图片写成视频
- opencv学习笔记--将多帧图片保存为视频
- OpenCV视频与图片序列相互转换
- opencv图片序列转换成视频
- opencv之图片序列转存为视频
- OpenCV 视频与图片序列相互转换
- Swift控制语句
- OCP 1Z0 052 161
- 学生信息管理系统(2)——增、删、改、查
- raspberry 连接yeelink,并通过串口输出
- ti dsp(tms320VC5502)+isp1581 usb2.0高速数据采集方案(1)
- OpenCV学习笔记:序列图片生成视频流方法
- 20140619-20笔记
- gstreamer 学习笔记 -- 音视频播放
- 点滴的积累---牛腩新闻发布系统总结
- c#访问修饰符
- 查看hive版本
- 我们应该知道的野火
- 在C/C++程序中嵌入perl解释器---注意事项
- ok6410 -- uart & led