OpenCV简单应用-----播放AVI视频

      用OpenCV播放视频,与显示图像一样容易。视频的播放也就是顺序得播放每一帧,OpenCV正是通过循环取出每一视频帧,将图像放进内存并显示,来实现视频的播放的。

      在VS2005环境下使用OpenCV,按以下几步很轻松播放一段AVI视频.

1.打开VC++ 2005,创建一个Win32控制台程序PlayAVI;

2.选择Solution Explorer里的ShowImage项目,点击鼠标右键,选择Properties,在[链接器 LINKER]的[输入INPUT]中,为项目的Debug配置增加依赖的库:cxcore200d.lib cv200d.lib highgui200d.lib ;为项目的Release配置增加依赖的库:cxcore200.lib cv200.lib highgui200.lib .

3.配置属性-字符集修改为使用“多字节字符集” (由于2005默认是以Unicode字符集编译的)

4.编译运行下面的例程(需要将test.avi文件放在项目目录下,与代码文件放在一起)。 #include "stdafx.h" #include "cv.h" #include "highgui.h" //添加全局变量表示滚动条位置 int g_slider_position =0; //由于回调函数onTrackbarSlide(int pos)使用CvCapture对象,将此对象也定义为全局变量 CvCapture* g_capture =NULL; //定义回调函数,被调用时用来传入滚动标签的位(作为一个32位整数以参数形式传入) void onTrackbarSlide(int pos) { cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, pos ); } int _tmain(int argc, _TCHAR* argv[]) { //创建命名窗口 cvNamedWindow("AVIShow",CV_WINDOW_AUTOSIZE); //利用函数cvCreateFileCapture读入avi文件,并返回一个CvCapture结构的指针,该结构被初始化为avi文件开头 //函数cvCreateFileCapture的参数可写avi文件绝对路径,或者其他参数设置 g_capture = cvCreateFileCapture("test.avi"); //利用cvGetCaptureProperty函数得到视频总帧数(有的视频类型无法获得总帧数) int frames=(int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_COUNT ); if (frames!=0){ //创建滚动条,设置滚动条的名称,所属窗口,将变量g_slider_position绑定到滚动条 cvCreateTrackbar( "Position", "AVIShow", &g_slider_position, //创建滚动条时,以此变量确定滚动标签初始位置 frames, //滚动条最大值 onTrackbarSlide //回调函数 ); } //定义IplImage结构类型指针(IplImage结构体在OpenCV中是最常用的数据结构) IplImage* frame; //进入循环 while(1) { //cvQueryFrame参数为CvCapture结构的指针,用来将下一帧视频文件载入内存(实际是填充或更新CvCapture结构) frame=cvQueryFrame(g_capture); //检验是否正确载入 if(!frame) break; //刷新窗口并显示图片 cvShowImage("AVIShow",frame); //等待33ms,若用户触发了按键,c会被设置为这个按键的ASCII码,否则c被设为-1. char c =cvWaitKey(33); //通过创建滚动条时滚动标签初始位置的改变实现滚动条的自动移动 g_slider_position++; cvCreateTrackbar( "Position", "AVIShow", &g_slider_position, frames, onTrackbarSlide ); } //若用户触发ESC按键,程序退出 if(c==27) break; //退出循环体,释放CvCapture结构开辟的内存(同时关闭所有打开的avi文件相关的句柄) cvReleaseCapture(&g_capture); //销毁窗口 cvDestroyWindow("AVIShow"); return (0); }

 以上程序在 vista  vs2005  OpenCV  环境下编译运行成功。

程序播放一段AVI视频,并可以通过滚动条拖动视频任意位置。

 

 

(完)

 

----程序代码主要来自《学习OpenCV中文版》(清华大学出版社)

你可能感兴趣的:(数据结构,properties,input,出版,avi,linker)