VedioCapture定义的成员函数
class CV_EXPORTS_W VideoCapture
{
public:
CV_WRAP VideoCapture();
CV_WRAP VideoCapture(const string& filename); //读取视频文件
CV_WRAP VideoCapture(int device); //打开摄像头,一般默认为0
virtual ~VideoCapture();
CV_WRAP virtual bool open(const string& filename); //另一种添加打开视频文件的方式
CV_WRAP virtual bool open(int device); //打开摄像头,一般默认为0
CV_WRAP virtual bool isOpened() const; //判断视频是否打开
CV_WRAP virtual void release(); //在程序结束的时候需要运行这个函数释放内存
CV_WRAP virtual bool grab();
CV_WRAP virtual bool retrieve(CV_OUT Mat& image, int channel=0);
virtual VideoCapture& operator >> (CV_OUT Mat& image);
CV_WRAP virtual bool read(CV_OUT Mat& image); //读取视频
CV_WRAP virtual bool set(int propId, double value); //读取视频时的一些设置
CV_WRAP virtual double get(int propId); // 得到所添加视频中的大部分信息
protected:
Ptr<CvCapture> cap;
};
两种读取视频方式
1. VidoeCapture capture(); //先实例再初始化
capture.open("filename");
2. VideoCapture capture("filename"); //实例同时进行初始化
读取视频中帧在打开视频之后我们就可以定义一个Mat
1然后利用read函数去读取视频帧
Mat frame;
capture.read(frame);
2直接读取
Mat frame;
capture >> frame;
我们还可以利用capture.get()获得视频中的很多信息,下面列出一些OpenCV里的一些宏定义,这些都可以利用get或set成员函数来设置或获取
#define CV_CAP_PROP_POS_MSEC 0 //以毫秒计算的当前的位置 #define CV_CAP_PROP_POS_FRAMES 1 //以帧计算当前的位置 #define CV_CAP_PROP_POS_AVI_RATIO 2 //视频的相对位置,从0到1前面这三个参数应该是跟视频播放,读取相关的动态信息 #define CV_CAP_PROP_FRAME_WIDTH 3 //帧宽 #define CV_CAP_PROP_FRAME_HEIGHT 4 //帧高度 #define CV_CAP_PROP_FPS 5 //帧率 #define CV_CAP_PROP_FOURCC 6 //4 字符编码方式 #define CV_CAP_PROP_FRAME_COUNT 7 //视频帧数 #define CV_CAP_PROP_FORMAT 8 //视频格式 #define CV_CAP_PROP_MODE 9 //后端指定值指示当前捕捉的模式. #define CV_CAP_PROP_BRIGHTNESS 10 //图像亮度 (只对摄像头). #define CV_CAP_PROP_CONTRAST 11 //图像对比度(只对摄像头). #define CV_CAP_PROP_SATURATION 12 //图像饱和度(只对摄像头). #define CV_CAP_PROP_HUE 13 //色调(只对摄像头) #define CV_CAP_PROP_GAIN 14 //增益(只对摄像头) #define CV_CAP_PROP_EXPOSURE 15 //曝光(只对摄像头) #define CV_CAP_PROP_CONVERT_RGB 16 //布尔型标记图像是否应该被转换为RGB. #define CV_CAP_PROP_WHITE_BALANCE 17 //白平衡 #define CV_CAP_PROP_RECTIFICATION 18 //立体相机的矫正标记