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
写入/附加到视频文件一帧。