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);