OpenCV从AVI视频提取图片
来源:互联网 发布:arcgis js 双击事件 编辑:程序博客网 时间:2024/04/30 00:59
使用OpenCV提取AVI里的视频(不限制avi格式,只要opencv支持的格式都行,同样来源也可以是摄像头),每隔几帧保存一张。
1.使用cvGrabFrame()+cvRetrieveFrame()
#include <iostream>#include <cv.h>#include <cxcore.h>#include <highgui.h>#pragma comment(lib, "ml.lib")#pragma comment(lib, "cv.lib")#pragma comment(lib, "cvaux.lib")#pragma comment(lib, "cvcam.lib")#pragma comment(lib, "cxcore.lib")#pragma comment(lib, "cxts.lib")#pragma comment(lib, "highgui.lib")#pragma comment(lib, "cvhaartraining.lib")int main(){CvCapture *capture = NULL;IplImage *frame = NULL;char *AviFileName = "D:\\clock.avi";//视频的目录char *AviSavePath = "D:\\截图\\";//图片保存的位置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"); std::cout<<"总帧数" << count_tmp << std::endl;return 0;}
2.使用cvQueryFrame()
#include <iostream>#include <cv.h>#include <cxcore.h>#include <highgui.h>#pragma comment(lib, "ml.lib")#pragma comment(lib, "cv.lib")#pragma comment(lib, "cvaux.lib")#pragma comment(lib, "cvcam.lib")#pragma comment(lib, "cxcore.lib")#pragma comment(lib, "cxts.lib")#pragma comment(lib, "highgui.lib")#pragma comment(lib, "cvhaartraining.lib")int main(){CvCapture *capture = NULL;IplImage *frame = NULL;char *AviFileName = "D:\\clock.avi";char *AviSavePath = "D:\\截图2\\";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"); std::cout << "总帧数" << count_tmp << std::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视频提取照片图片
- opencv图片转换为avi格式视频
- OpenCV将连续图片合成视频AVI
- avi视频的提取与处理(opencv)
- OPENCV--播放AVI视频
- opencv保存avi视频
- 从图片文件夹下读取图片并写入AVI视频
- opencv 将图片合成为视频流(AVI格式)
- opencv 多组图片 合成视频动画avi
- opencv第二章-显示一张图片和播放avi视频
- opencv 将图片合成为视频流(AVI格式)
- OpenCV人脸检测并把图片写成avi视频
- opencv提取视频之后存成图片
- 利用OPENCV写的从视频中提取图片样本的小程序
- 利用OPENCV写的从视频中提取图片样本的小程序
- opencv播放AVI视频(2)
- OpenCV(2)-播放AVI视频
- DES加密解密文件
- 行为型模式-----解释器(Interpreter)
- Asia Regional 2011(最短路)
- 常用的主机监控的 Shell 脚本
- BZOJ 2037 Sue的小球(区间DP)
- OpenCV从AVI视频提取图片
- log4j配置文件位置详解
- 常用的时间同步服务器地址
- scrum经验
- 关于StringBuffer中的实参与形参问题
- ERROR 2006 (HY000) at line xx: MySQL server has gone away 解决方法
- ZOJ 2760 - How Many Shortest Path(最短路的个数) Floyd+最大流
- QT使用scrollarea显示图片,完美解决方案
- CSS 鼠标响应事件,鼠标经过CSS,鼠标移动CSS,鼠标点击CSS