VS2010+openCV249播放AVI视频


/*
播放AVI视频
播放视频时,只需要处理的新问题就是如何循环地顺序读取视频中的每一帧,以及如何从枯燥的电影视频的读取中退出该循环操作。
*/
#include "highgui.h"
int main( int argc, char** argv ) { 
    cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );
 /*
 函数cvCreateFileCapture()通过参数设置确定要读入的AVI文件,返回一个指向CvCapture结构的指针。这个
 结构包括了所有要读入的AVI文件信息,其中包含状态信息。在调用这个函数之后,返回指针所指向的CvCapture结构
 被初始化到所对应的AVI文件的开头
 */
    CvCapture* capture = cvCaptureFromAVI( argv[1] ); // either one will work
   // CvCapture* capture = cvCreateFileCapture( argv[1] );
    IplImage* frame;
    while(1) {
  /*
  cvQueryFrame()的参数为CvCapture结构的指针,用来读取下一帧视频文件载入内存(实际上是填充或者更新CvCapture结构中)
  返回一个对应当前帧的指针。与cvLoadImage不同的是,cvLoadImage为图像分配内存空间, 而cvQueryFrame使用已经在
  CvCapture结构中分配好的内存。这样的话,就没有必要通过释放cvReleaseImage()对这个返回的图像指针进行释放,
  当CvCapture结构被释放以后,每一帧图像所对应的内存空间即会被释放。
  
  */
        frame = cvQueryFrame( capture );
        if( !frame ) break;
        cvShowImage( "Example2", frame );
  //下两行代码是手动控制退出
        char c = cvWaitKey(330);
        if( c == 27 ) break;
    }
    cvReleaseCapture( &capture );
    cvDestroyWindow( "Example2" );
}
/*
cvNamedWindow();函数时一个高层调用函数,该函数由HighGUI库提供。用于在屏幕上创建一个窗口,将被显示的图像包含于该窗口中。
函数的第一个参数制定了该窗口的标题("Example1"),如果要使用HighGUI库所提供的其他函数与该窗口进行交互时,我们将通过
该参数引用这个窗口。
cvNamedWindow()第二个参数定义了窗口的属性。该参数可以被设置为CV_WINDOW_AUTOSIZE或者0.设置为0是,窗口的大小不会因图
像的大小而改变,图像只能在窗口中根据窗口的大小而进行拉伸或缩放。而设置为CV_WINDOW_AUTOSIZE时,窗口则会根据图像的
实际大小进行自动拉伸或缩放。以容纳图像。


注:关于命令行参数,argv[1]可以通过项目→属性→调试→命令行参数进行设置。也可以通过快捷键Alt+F7。


*/
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值