VedioCapture定义的成员函数
class CV_EXPORTS_W VideoCapture
{
public:
CV_WRAP VideoCapture();
CV_WRAP VideoCapture(const string& filename);
CV_WRAP VideoCapture(int device);
virtual ~VideoCapture();
CV_WRAP virtual bool open(const string& filename);
CV_WRAP virtual bool open(int device);
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 //立体相机的矫正标记
|