Opencv读取视频


CvCapture 是一个结构体,用来保存图像捕获所需要的信息。 opencv提供两种方式从外部捕获图像 一种是从摄像头中, 一种是通过解码视频得到图像。 两种方式都必须从第一帧开始一帧一帧的按顺序获取,因此每获取一帧后都要保存相应的状态和参数。 比如从视频文件中获取,需要保存视频文件的文件名,相应的解码器类型,下一次如果要获取将需要解码哪一帧等。 这些信息都保存在CvCapture结构中,每获取一帧后,这些信息都将被更新,获取下一帧需要将新信息传给获取的api接口

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"

int main(int argc, char* argv[])
{
CvCapture *capture=cvCreateFileCapture("E:\\大三下\\考研\\2016考研词汇5500【恋练有词 朱伟】\\04 低频词汇\\Unit24——26\\Unit 24 初始词汇.avi");
cvNamedWindow("视频");
IplImage* src;
while(1)
{
if(capture)
{
src=cvQueryFrame(capture);
cvShowImage("视频",src);
char c=cvWaitKey(33);
if(c==27)
break;
}
}

cvReleaseCapture(&capture);
cvDestroyWindow("视频");

return 0;
}

读取视频的步骤:

1、创建一个窗口:cvNamedWindow(name,flags);

2、创建一个指针,指向要打开的视频文件:CvCapture *capture=cvCreateFileCapture("视频路径");  返回该视频的一些信息

3、读取视频当中当前帧的下一帧:src=cvQueryFrame(capture);

4、在窗口中显示读取到的帧:cvShowImage("视频",src);

 

相关函数介绍:

1、cvCreateFileCapture(char*name);  通过输入要读取的avi文件的路径,然后,该函数返回一个指向CvCapture结构体的指针。

2、cvQueryFrame(capture); 输入一个CvCapture类型的指针,该函数主要功能是将视频文件的下一帧加载到内存。与cvLoadImage的不同之处是,该函数不重新分配内存空间

3、cvWaitKey(33);  当前帧被显示后,等待33毫秒。如果用户触发了一个按键,c会被设置成这个按键的ASCII码,否则会被设置成-1。 cvWaitKey(33)在此处的另外一个作用是,控制帧率。这里表示每读一帧就停33毫秒,则每秒读的帧数即帧率是1000/33

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM