新建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没有公共接口,它只能被用来作视频获取函数中使用的一个参数。