视频读写函数

来源:互联网 发布:社会心理学 知乎 编辑:程序博客网 时间:2024/05/01 02:34

cvCaptureFromCAM 

初始化从摄像头中获取视频

 

CvCapture* cvCaptureFromCAM( int index ); 

index  

要使用的摄像头索引。

如果只有一个摄像头或者用哪个摄像头也无所谓,

那使用参数

-1

应该

便可以。

 

 

函数

cvCaptureFromCAM

给从摄像头的视频流分配和初始化

CvCapture

结构。目前在

Windows

下可使用两种接口:

Video 

for 

Windows

VFW)

Matrox 

Imaging 

Library

MIL)

 

Linux

下也有两种接口:V4L

FireWire(IEEE1394)。  

释放这个结构,使用函数

cvReleaseCapture

。 

 

cvReleaseCapture 

释放

CvCapture

结构

 

void cvReleaseCapture( CvCapture** capture ); 

capture  

视频获取结构指针。

 

 

函数

cvReleaseCapture

释放由

cvCaptureFromFile

 或者

cvCaptureFromCAM

申请的

CvCapture

结构。  

 

cvGrabFrame 

从摄像头或者视频文件中抓取帧

 

int cvGrabFrame( CvCapture* capture ); 

capture  

视频获取结构指针。

 

 

函数

cvGrabFrame

从摄像头或者文件中抓取帧。被抓取的帧在内部被存储。这个函数的

目的是

快速

的抓取帧,这一点对同时从几个摄像头读取数据的同步是很重要的。被抓取

的帧可能是压缩的格式(由摄像头/驱动定义),所以没有被公开出来。如果要取回获

取的帧,请使用

cvRetrieveFrame

。  

 

cvRetrieveFrame 

取回由函数

cvGrabFrame

抓取的图像

 

IplImage* cvRetrieveFrame( CvCapture* capture ); 

capture  

视频获取结构。

 

 

函数

cvRetrieveFrame

返回由函数

cvGrabFrame

 抓取的图像的指针。

返回的图像不可以

被用户释放或者修改。  

 

cvQueryFrame 

从摄像头或者文件中抓取并返回一帧

 

IplImage* cvQueryFrame( CvCapture* capture ); 

capture  

视频获取结构。

 

 

函数

cvQueryFrame

从摄像头或者文件中抓取一帧,然后解压并返回这一帧。这个函数

仅仅是函数

cvGrabFrame

和函数

cvRetrieveFrame

在一起调用的组合。

返回的图像不可

以被用户释放或者修改。  

 

cvGetCaptureProperty 

获得视频获取结构的属性

 

double cvGetCaptureProperty( CvCapture* capture, int property_id ); 

capture  

视频获取结构。

 

 

property_id  

属性标识。可以是下面之一:

 

CV_CAP_PROP_POS_MSEC

 - 

影片目前位置,为毫秒数或者视频获取时间戳

 

CV_CAP_PROP_POS_FRAMES

 - 

将被下一步解压/获取的帧索引,以

0

为起点

 

CV_CAP_PROP_POS_AVI_RATIO

 - 

视频文件的相对位置(

0 - 

影片的开始,

1 - 

影片的结尾

CV_CAP_PROP_FRAME_WIDTH

 - 

视频流中的帧宽度

 

CV_CAP_PROP_FRAME_HEIGHT

 - 

视频流中的帧高度

 

CV_CAP_PROP_FPS

 - 

帧率

 

CV_CAP_PROP_FOURCC

 - 

表示

codec

的四个字符

 

CV_CAP_PROP_FRAME_COUNT

 - 

视频文件

中帧的总数

 

 

函数

cvGetCaptureProperty

获得摄像头或者视频文件的指定属性。  

译者注:

有时候这个函数在

cvQueryFrame

被调用一次后,

再调用

cvGetCaptureProperty

才会返回正确的数值。 

 

cvSetCaptureProperty 

设置视频获取属性

 

int 

cvSetCaptureProperty( 

CvCapture* 

capture, 

int 

property_id, 

double 

value 

); 

capture  

视频获取结构。

 

 

property_id  

属性标识符。可以是下面之一:

 

CV_CAP_PROP_POS_MSEC

 - 

从文件开始的位置,单位为毫秒

 

CV_CAP_PROP_POS_FRAMES

 - 

单位为帧数的位置(只对视频文件有效)

 

CV_CAP_PROP_POS_AVI_RATIO

 - 

视频文件的相对位置(

0 - 

影片的开始,

1 - 

影片的结尾

CV_CAP_PROP_FRAME_WIDTH

 - 

视频流的帧宽度(只对摄像头有效)

 

CV_CAP_PROP_FRAME_HEIGHT

 - 

视频流的帧高度(只对摄像头有效)

 

CV_CAP_PROP_FPS

 - 

帧率(只对摄像头有效)

 

CV_CAP_PROP_FOURCC

 - 

表示

codec

的四个字符(只对摄像头有效)

 

 

value  

属性的值。

 

 

函数

cvSetCaptureProperty

设置指定视频获取的属性。目前这个函数对视频文件只支

持: CV_CAP_PROP_POS_MSEC, CV_CAP_PROP_POS_FRAMES, CV_CAP_PROP_POS_AVI_RATIO  

 

cvCreateVideoWriter 

创建视频文件写入器

 

typedef struct CvVideoWriter CvVideoWriter; 

CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double 

fps, CvSize frame_size, int is_color=1 ); 

filename  

输出视频文件名。

 

 

fourcc  

四个字符用来表示压缩帧的

codec 

例如,

CV_FOURCC('P','I','M','1')

MPEG-1 

codec

 

CV_FOURCC('M','J','P','G')

motion-jpeg codec

等。

 

Win32

下,如果传

入参数

-1

,可以从一个对话框中选择压缩方法和压缩参数。

 

 

fps  

被创建视频流的帧率。

 

 

frame_size  

视频流的大小。

 

 

is_color  

如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在

Windows

下支

持这个标志)

 

 

函数

cvCreateVideoWriter

创建视频写入器结构。  

 

cvReleaseVideoWriter 

释放视频写入器

 

void cvReleaseVideoWriter( CvVideoWriter** writer ); 

writer  

指向视频写入器的指针。

 

 

函数

cvReleaseVideoWriter

结束视频文件的写入并且释放这个结构。  

 

cvWriteFrame 

写入一帧到一个视频文件中

 

int cvWriteFrame( CvVideoWriter* writer, const IplImage* image ); 

writer  

视频写入器结构。

 

 

image 

被写入的帧。

 

 

函数

cvWriteFrame

写入/附加到视频文件一帧。  


0 0