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以后继续执行循环。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值