1.视频打开方式
1.1利用构造体在定义的时候打开
VideoCapture cap(deviceID);//从设备打开
VideoCapture cap(filename);//从指定的路径打开视频文件
1.2利用VideoCapture类提供方法open打开
VideoCapture cap;
//下面出现的deviceID和filename与1.1中含义相同
if(!cap.open(deviceID/filename))
{
//文件没有正确打开的处理
}
注意:有多个相机设备打开时,一定按设备号降序打开。
2.视频的读取
//! 方式1
Mat frame;
cap >> frame;//利用重载运算符>>
//! 方式2
Mat frame;
cap.read(frame);
上述两种方式使用方法原型分别为:
方式1.VideoCapture& VideoCapture::operator>>(Mat& image);
方式2.bool VideoCapture::read(Mat& image);//返回值为布尔型,可以通过返回值判断读取是否成功
如果相机已经断开连接或者视频已经读完,那么函数返回值为NULL或者false。
3.与视频相关的属性获取和设置
3.1获取与视频相关的属性
C++:double VideoCapture::get(int propId)
//获得视频帧率
double fps = cap.get(CV_CAP_PROP_FPS)
//获得视频图像的宽度
double width = cap.get(CV_CAP_PROP_FRAME_WIDTH);
获取的属性主要由propId决定,propId的具体取值可以参看OpenCV Reference Mannual 2.4.9版本的352页。
</pre><pre name="code" class="cpp">3.2设置与视频相关的属性
</pre><p></p><p><pre name="code" class="cpp">C++:bool VideoCapture::set(int propId, double value)
//设置视频的帧率
cap.set(CV_CAP_PROP_FPS, 30);//设置视频帧率为30
4.视频写入磁盘
//方式1
VideoWriter wr;
//filename:待写入的文件路径
//fourcc:用于压缩图像帧的4字符编码器代码
//fps:所创建的视频流的帧率
//framesize:视频帧的尺寸
//isColor:编码为彩色视频还是灰度视频
if(!wr.open(filename,fourcc,fps,framesize,isColor)
{
//打开写入文件出错处理
}
//将图像写入视频文件
wr << frame;或者wr.write(frame);