cvCaptureFromAVI函数(初始化一个视频文件捕捉器)
原型:
#define cvCaptureFromAVI cvCaptureFromFile
#define cvCaptureFromFile cvCreateFileCapture
说明:
函数cvCaptureFromAVI()和cvCaptureFromFile()和cvCreateFileCapture()作用一样,
文件的类型不一定必须是AVI格式,只要文件符合OpenCV播放支持的格式就能播放。
cvGrabFrame函数(从视频或capture 结构体中获取下一帧图像)
原型:
int cvGrabFrame(CvCapture* capture);
参数:
capture 视频获取结构
返回值:
返回值为NULL,说明到了视频的最后一帧或失败
返回值为true,说明帧图像获取成功
cvRetrieveFrame函数(解码并返回抓取的帧图像)
原型:
IplImage* cvRetrieveFrame( CvCapture* capture );
参数:
capture 视频获取结构
返回值:
IplImage 帧图像
说明:
返回的图像不可以被用户释放或者修改
源代码:
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
int main()
{
CvCapture *capture;
IplImage *frame;
capture = cvCaptureFromAVI("Coil.avi");//初始化一个视频文件捕捉器
cvNamedWindow("AVI player",0);
while(true)
{
if(cvGrabFrame(capture))//从视频获取下一帧
{
frame=cvRetrieveFrame(capture);//解码并返回由函数cvGrabFrame抓取的图像
cvShowImage("AVI player",frame); //在指定窗口中显示图像
if(cvWaitKey(10)>=0)//等待10ms
break;
}
else
{
break;
}
}
cvReleaseCapture(&capture);//释放CvCapture结构
cvDestroyWindow("AVI player");//销毁一个窗口
}
效果图: