视频播放设备播放控制系统
2015-07-10曾昭红
曾昭红
摘 要:近些年来,数字技术发展迅猛,数字影视随之快速发展。其中,视频播放设备的播放控制系统的作用十分关键。本文将以OpenCV设备播放视频的控制系统为例,主要就视频播放设备播放控制系统展开研究。
关键词:OpenCV设备;视频播放;控制;系统
1 使用OpenCV设备播放视频的控制系统
使用OpenCV播放视频,几乎与使用它来显示图像一样容易。播放视频时只需要处理的新问题就是如何循环地顺序读取视频中的每一帧,以及如何从枯燥的电影视频的读取中退出该循环操作。具体如例1所示。
例1:下列简单的OpenCV程序,用于播放硬盘中的视频文件。
#include “highgui.h”int main ( int argc, char** argv ) { cvNamedWindow ( “Example2”, CV_WINDOW_AUTOSIZE );CvCapture* capture = cvCreateFileCapture ( argv[1] );IplImage* frame;while ( 1 ) { frame = cvQueryFrame ( capture );if ( !frame ) break;cvShowImage ( “Example2”, frame );char c = cvWaitKey ( 33 );if ( c == 27 ) break; } cvReleaseCapture ( &capture ); cvDestroyWindow ( “Example2” ); }
这里我们还是通过前面的方法创建一个命名窗口,在"例2"中,事情变得更加有趣了。
CvCapture* capture = cvCreateFileCapture ( argv[1] );
函数cvCreateFileCapture ( )通过参数设置确定要读入的AVI文件,返回一个指向CvCapture结构的指针。这个结构包括了所有关于要读入AVI文件的信息,其中包含状态信息。在调用这个函数后,返回指针所指向的CvCapture结构被初始化到所对应AVI文件的开头。
frame = cvQueryFrame ( capture );
一旦进入while ( 1 )循环,我们便开始读入AVI文件,cvQueryFrame的参数为CvCapture结构的指针。用来将下一帧视频文件载入内存 ( 实际是填充或更新CvCapture结构中 )。返回一个对应当前帧的指针。与cvLoadImage不同的是,cvLoadImage为图像分配内存空间,而cvQueryFrame使用已经在cvCapture结构中分配好的内存。这样的话,就没有必要通过cvReleaseImage ( )对这个返回的图像指针进行释放,当CvCapture结构被释放后,每一帧图像所对应的内存空间即会被释放。
c = cvWaitKey ( 33 ); if ( c == 27 ) break;
当前帧被显示后,我们会等待33 ms。 [11]如果其间用户触发了一个按键,c会被设置成这个按键的ASCII码,否则,c会被设置成-1。……
