opencv播放AVI视频(2)

#include "highgui.h"
using namespace cv;
using namespace std;

int main()
{
	cvNamedWindow("example");
	CvCapture * capture = cvCreateFileCapture("H:\\资料\\opencv相关资料\\OpenCV教程\\图像与视频\\video.long.mjpg.avi");
	IplImage * frame;
	while(1)
	{
		frame = cvQueryFrame(capture);
		if(!frame)break;
		cvShowImage("example",frame);
		char c = cvWaitKey(33);
		if(c==27) break;
	}
	cvReleaseCapture(&capture);
	cvDestroyWindow("example");
}

1.cvNamedWindow("example");
     创建命名窗口
2.CvCapture * capture = cvCreateFileCapture("H:\\资料\\opencv相关资料\\OpenCV教程\\图像与视频\\video.long.mjpg.avi");
    cvCreateFileCapture函数读取路径下的视频文件,把帧信息指针返回到CvCapture结构体指针中,包含关于要读入的avi文件的状态信息
    此次调用返回avi视频文件的开头。
3.frame = cvQueryFrame(capture);
    需要不断循环读取下一帧,因此需要while循环,只有当用户按键或者视频读取完毕时才跳出循环。
    cvQueryFrame函数的功能是:根据CvCapture指针提供的状态信息,抓取帧信息保存到IplImage指针里。
4.char c = cvWaitKey(33);
    cvWaitKey函数的作用有两个:①控制帧率,我的理解是控制视频播放的快慢,返回值是-1;
                                            ②接受键盘输入,返回值为该键盘对应的asiccII码。
5.cvReleaseCapture(&capture);
    cvDestroyWindow("example");
    释放CvCapture指针的内存空间,同时关闭命名窗口。

需要注意的是:
如果cvCreateFileCapture的返回值是0,则有以下可能:
  1.电脑中没有安装AVI解码器。
  2.视频路径有错误。

posted on 2013-02-06 20:35  0fengfan0  阅读(5979)  评论(0编辑  收藏  举报

导航