OpenCV视频处理

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



猜你喜欢

转载自blog.csdn.net/zdx19880830/article/details/30496183