#include "cv.h"
#include "highgui.h"
int main (int argc,char** argv)
{
cvNamedWindow("Example2",0);
CvCapture* capture = cvCreateFileCapture("D:\\VS2010\\test\\test2\\test2\\V2013_11_06.avi"); //cvCreateFileCapture()通过参数设置确定要读入的avi文件,返回一个指向CvCapture结构的指针。这个结构包括了所有关于要读入avi文件的信息,其中包含状态信息。调用这个函数之后,返回指针所指向的CvCapture结构被初始化到对应的avi文件的开头。
IplImage* frame;
while(1)
{
frame = cvQueryFrame(capture);//函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。cvQueryFrame的参数为CvCapture结构的指针。用来将下一帧视频文件载入内存,返回一个对应当前帧的指针。与cvLoadImage不同的是cvLoadImage为图像分配内存空间,而cvQueryFrame使用已经在cvCapture结构中分配好的内存。这样的话,就没有必要通过cvReleaseImage()对这个返回的图像指针进行释放,当CvCapture结构被释放后,每一帧图像所对应的内存空间即会被释放。
if (!frame)
break;
cvShowImage("Example2",frame);
char c = cvWaitKey(33);//当前帧被显示后会等待33ms,如果期间用户触发了一个按键,c会被设置成这个按键的ASCII码,否则,c会被设成-1.如果用户触发了ESC键,循环被退出,读入视频停止,否则33ms以后继续执行循环。
if (c==27)
break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("Example2");
}
#include "highgui.h"
int main (int argc,char** argv)
{
cvNamedWindow("Example2",0);
CvCapture* capture = cvCreateFileCapture("D:\\VS2010\\test\\test2\\test2\\V2013_11_06.avi"); //cvCreateFileCapture()通过参数设置确定要读入的avi文件,返回一个指向CvCapture结构的指针。这个结构包括了所有关于要读入avi文件的信息,其中包含状态信息。调用这个函数之后,返回指针所指向的CvCapture结构被初始化到对应的avi文件的开头。
IplImage* frame;
while(1)
{
frame = cvQueryFrame(capture);//函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。cvQueryFrame的参数为CvCapture结构的指针。用来将下一帧视频文件载入内存,返回一个对应当前帧的指针。与cvLoadImage不同的是cvLoadImage为图像分配内存空间,而cvQueryFrame使用已经在cvCapture结构中分配好的内存。这样的话,就没有必要通过cvReleaseImage()对这个返回的图像指针进行释放,当CvCapture结构被释放后,每一帧图像所对应的内存空间即会被释放。
if (!frame)
break;
cvShowImage("Example2",frame);
char c = cvWaitKey(33);//当前帧被显示后会等待33ms,如果期间用户触发了一个按键,c会被设置成这个按键的ASCII码,否则,c会被设成-1.如果用户触发了ESC键,循环被退出,读入视频停止,否则33ms以后继续执行循环。
if (c==27)
break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("Example2");
}