#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.视频路径有错误。