OpenCV学习(四)之播放一个AVI视频

下面贴上源代码:

#include "highgui.h"

using namespace cv;

int main(int argc,char** argv)
{
	cvNamedWindow("Video",0);
	//cvNamedWindow("Video",CV_WINDOW_AUTOSIZE);
	CvCapture* capture = cvCreateFileCapture("test.avi");
	IplImage* frame;
	while(1)
	{
		frame = cvQueryFrame(capture);
		if(!frame)
			break;
		cvShowImage("Video",frame);
		char c = cvWaitKey(33);
		if(c == 27)
			break;
	}
	cvReleaseImage(&frame);
	cvDestroyWindow("Video");
}

test.avi是存放在工程目录下的视频文件。

CvCapture* capture = cvCreateFileCapture("test.avi"):

cvCreateFileCapture()通过参数设置确定要读入的AVI视频文件,返回一个CvCapture结构的指针。该结构包括了所有关于读入AVI文件的信息,其中包含状态信息。

frame = cvQueryFrame(capture):

cvQueryFrame的参数为CvCapture结构的指针。用来将下一帧视频文件载入内存(实际是填充或跟新CvCapture结构中)。返回一个对应当前帧的指针。与cvLoadImage不同的是,cvLoadImage为图像分配内存空间,而cvQueryFrame是使用已经存在CvCapture结构中分配好的内存。这样的话,就没有必要通过cvReleaseImage()对这个返回的图像指针进行释放。当CvCapture结构被释放后,每一帧图像所对应的内存空间即会释放。

char c = cvWaitKey(33);
if(c == 27)
break;

当前帧被播放后,我们会等待33ms。如果其间用户触发了一个按键,c会被设置成这个按键的ASCII码,否则,c会被置成-1。如果触发了ESC(ASCII 27),退出循环,读入视频停止。否则33ms以后继续执行循环。

你可能感兴趣的:(OpenCV播放一个AVI视频)