使用openCv从avi视频提取照片图片
2012-12-10 12:22
656 查看
使用openCv提取avi里的视频(不限制avi格式,只要opencv支持的格式都行,同样来源也可以是摄像头),每隔几帧保存一张。
1.使用cvGrabFrame()+cvRetrieveFrame()
2.使用cvQueryFrame()
参考资料:
OpenCV 获取摄像头,新建窗口显示摄像头视频
http://www.cnblogs.com/Anykong/archive/2011/04/09/Anykong_OpenCV2.html
AVI文件的读取并显示
http://blog.csdn.net/lelekyle/article/details/5679135
ps:本人在opencv 2.4.1 + vs2010,编译上述代码通过,但运行出错(同事的就不出错),环境配置是没问题的,估计是库的问题。
而使用opencv 2.4.1+ vc6.0完全正常。不知是神马问题。
1.使用cvGrabFrame()+cvRetrieveFrame()
int main() { CvCapture *capture = NULL; IplImage *frame = NULL; char *AviFileName = "E:\\video.avi";//视频的目录 char *AviSavePath = "E:\\截图\\";//图片保存的位置 const int jiange = 2;//间隔两帧保存一次图片 capture = cvCaptureFromAVI(AviFileName); cvNamedWindow("AVI player",1); int count_tmp = 0;//计数总帧数 char tmpfile[100]={'\0'}; while(true) { if(cvGrabFrame(capture)) { if (count_tmp % jiange == 0) { frame=cvRetrieveFrame(capture); cvShowImage("AVI player",frame);//显示当前帧 sprintf(tmpfile,"%s//%d.jpg",AviSavePath,count_tmp);//使用帧号作为图片名 cvSaveImage(tmpfile,frame); } if(cvWaitKey(10)>=0) //延时 break; ++count_tmp; } else { break; } } cvReleaseCapture(&capture); cvDestroyWindow("AVI player"); cout<<"总帧数"<<count_tmp<<endl; return 0; }
2.使用cvQueryFrame()
int main() { CvCapture *capture = NULL; IplImage *frame = NULL; char *AviFileName = "E:\\video.avi"; char *AviSavePath = "E:\\截图\\"; const int jiange = 2;//间隔两帧保存一次图片 capture = cvCaptureFromAVI(AviFileName); cvNamedWindow("AVI player",1); int count_tmp = 0;//计数 总帧数 char tmpfile[100]={'\0'}; while( (frame=cvQueryFrame(capture)) != NULL) { if (count_tmp % jiange == 0) { cvShowImage("AVI player",frame);//显示当前帧 sprintf(tmpfile,"%s//%d.jpg",AviSavePath,count_tmp);//使用帧号作为图片名 cvSaveImage(tmpfile,frame); } if(cvWaitKey(10)>=0) //延时 break; ++count_tmp; } cvReleaseCapture(&capture); cvDestroyWindow("AVI player"); cout<<"总帧数"<<count_tmp<<endl; return 0; }
参考资料:
OpenCV 获取摄像头,新建窗口显示摄像头视频
http://www.cnblogs.com/Anykong/archive/2011/04/09/Anykong_OpenCV2.html
AVI文件的读取并显示
http://blog.csdn.net/lelekyle/article/details/5679135
ps:本人在opencv 2.4.1 + vs2010,编译上述代码通过,但运行出错(同事的就不出错),环境配置是没问题的,估计是库的问题。
而使用opencv 2.4.1+ vc6.0完全正常。不知是神马问题。
相关文章推荐
- OpenCV从AVI视频提取图片
- OPENCV读取AVI视频失败 视频帧提取以及图片合成视频
- 播放一个AVI视频,相当于使用opencv创建自己的视频播放器
- OpenCV 实践程序16——提取视频每一帧及用多张图片合成视频
- 使用ffmpegAPI提取视频指定时间点图片
- OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
- ios--OpenCV--提取图片(或者视频)的R,G,B颜色分量
- OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
- python 使用opencv 把视频 分割成图片
- 利用OPENCV写的从视频中提取图片样本的小程序
- 使用 Visual Studio 2008 和 OpenCV 在窗口显示图片或视频
- OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
- 利用OPENCV写的从视频中提取图片样本的小程序
- 使用opencv把图片拼接成视频
- 如何使用ffmpeg从视频中提取图片
- OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
- 调用opencv相关函数,从视频流中提取出图片序列&&&&jpg图片序列,转化成avi格式视频
- OpenCV提取一张图片(或者视频)的R,G,B颜色分量
- 【opencv学习】 Low-Power Image Recognition Challenge (LPIRC):Track 3 用摄像头从带二维码边框的图片中提取照片及信息的方法
- 使用OpenCV对一系列图像生成视频avi