新建Win32 Console Application 项目: opencvvedio
在Opencvvedio.cpp中输入如下代码, 并在项目源码目录下放入avi文件:vedio.avi(注意这个avi文件不能太大,否则可能不能正常加载)
#include "stdafx.h"
#include"highgui.h" // 图像和视频的输入/输出均在HighGUI模块中
// 播放视频文件只需要循环地并按顺序地读取视频中的每一帧
// 读到帧后,便可以将这个帧作为普通的图像一样显示即可
int main(int argc, char** argv)
{
//首先需要建立一个窗口来容纳视频的播放
cvNamedWindow("vedio",CV_WINDOW_AUTOSIZE);
//打开一个视频文件,返回 CvCapture 结构中包含了视频文件的信息
CvCapture *capture = cvCreateFileCapture("vedio.avi");
IplImage *frame;
//循环顺序地读取视频中的帧
while(1)
{
// 获取当前播放帧的下一帧,并且将获取到的帧加载到内存中,覆盖掉前面帧所占的内存
frame = cvQueryFrame(capture);
if(!frame)
{ // 如果没有读取到帧的话,则说明视频播放完毕了,从而退出播放
break;
}
//将读取到的帧显示在窗口中
cvShowImage("vedio",frame);
//每播放一个帧就在此等待30毫秒
char c=cvWaitKey(30);
//如果在30ms中用户按下了ESC键
//(ESC键的ASCII为27)则退出播放
if(27 == c)
{
break;
}
}
// 释放分配到内存
cvReleaseCapture(&capture);
//销毁窗口
cvDestroyWindow("vedio");
}
按下F5执行, 运行结果:
备注:
CvCapture:视频获取结构
说明:OpenCV中的视频获取结构。结构CvCapture没有公共接口,它只能被用来作视频获取函数中使用的一个参数。