预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"javascript:;"【OpenCV学习笔记】1.2播放AVI视频&视频播放控制(2012-02-0612:00) HYPERLINK"http://blog.chinaunix.net/space.php?uid=26673820&do=tag"标签:HYPERLINK"http://blog.chinaunix.net/space.php?uid=26673820&do=tag&id=117383"OpenCVHYPERLINK"http://blog.chinaunix.net/space.php?uid=26673820&do=tag&id=106722"学习笔记HYPERLINK"http://blog.chinaunix.net/space.php?uid=26673820&do=tag&id=256827"视频HYPERLINK"http://blog.chinaunix.net/space.php?uid=26673820&do=tag&id=256966"滚动条分类:HYPERLINK"http://blog.chinaunix.net/space.php?uid=26673820&do=blog&frmd=0&classid=151384&view=me"OpenCV学习笔记 用OpenCV播放视频与显示图片的区别,在于播放视频其实就是循环地读取视频中的每一帧,也就是每一张图片,然后快速地顺序显示出来。当需要停止播放视频时,只需要跳出循环即可。而HIghGUI工具包里面的滚动条可以使我们从视频的一帧跳到另外一帧,实现视频播放时的快速拖动功能。 环境:WIN732bits+VS2010+OpenCV2.2.0 在VS2010中新建WIN32项目,完成库及依赖项的配置(具体方法见前一篇)。代码中首先设置全局变量,然后定义一个名为onTrackbarSlide的回调函数,在main函数中调用。具体代码分析如下: #include"stdafx.h" #include"cv.h" #include<cxcore.h> #include<highgui.h> //设置全局变量,一个为滚动条的位置。回调函数需要用到的变量cvCapture也是全局变量,所以前面有g_,代表global intg_slider_position=0; CvCapture*g_capture=NULL; //回调函数,滚动条拖动时被调用参数是滚动条的位置(整数)此函数可以设置cvCapture对象的属性 voidonTrackbarSlide(intpos){ cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, pos ); } //main函数 int_tmain(intargc,_TCHAR*argv[]){ cvNamedWindow("Video",CV_WINDOW_AUTOSIZE); //只分配一帧的存储空间,此时指针指向avi的开头空间。 g_capture=cvCreateFileCapture("myvideo.avi"); //获取视频的全部帧数frames intframes=(int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_COUNT ); //创建滚动条 if(frames!=0){ cvCreateTrackbar( "Position",//滚动条名称 "Video",//所属窗口 &g_slider_position, frames, onTrackbarSlide//当滚动条拖动时被触发 ); } IplImage*frame; //进入while循环就开始读取avi文件 while(1){ //将下一帧视频文件载入内存,返回一个对应当前帧的指针,不同与cvLoadImage为图像分配内存,cvQueryFrame使用已经在cvCapture结构中分配好的内存frame=cvQueryFrame(g_capture);if(!frame)break;cvShowImage("Video",frame);charc=cvWaitKey(33);//显示每一帧之间有33毫秒的间隔if(c==27)break;如果在这间隔期间用户触发Esc按键循环就退出否则继续执行循环} cvReleaseCapture(&g_capture); cvDestroyWindow("Video"); return0; } 运行结果: