赞
踩
此篇博文主要记录使用Opencv4系列对视频的读取功能。
cv::VideoCapture类是读取视频的,cv::VideoCapture既支持视频问价的读取,也支持从视频捕获的文件中读取视频数据,像笔记本的自带摄像头,外接USB的摄像头等。
创建对象的方式有三种:
- //1. 从输入的文件名对应的文件中读取
- cv::VideoCapture capture(const string& fileName);
- //2. 从视频捕捉设备ID中读取
- cv::VideoCapture capture(int device);
- //3. 调用无参构造函数创建对象
- cv::VideoCapture capture();
-
创建完VideoCapture类之后,还需要将视频中的图像取出来,读取到cv::Mat矩阵中,共有两种方式,一种是read,一种是>>操作。
- cv::VideoCapture cap;
- cap.open("xxx/xxx/xxx.mp4");
-
- //1. read 方式
- Mat frame;
- cap.read(frame);
- //2. >> 方式
- cap >> frame;
-
- //获取 视频中的某些属性
- retval = cap.get(gropId);
- //gropId代表的数字属性:
- 1:cv2::CAP_PROP_POS_FRAMES 从0开始索引帧,帧位置
- 2: cv2::CAP_PROP_POS_AVI_RATIO 视频文件的相对位置(0表示开始,1表示结束)
- 3: cv2::CAP_PROP_FRAME_WIDTH 视频流的帧宽度
- 4: cv2::CAP_PROP_FRAME_HEIGHT 视频流的帧高度
- 5: cv2::CAP_PROP_FPS 帧率
- 6: cv2::CAP_PROP_FOURCC 编解码器四字符代码
- 7: cv2::CAP_PROP_FRAME_COUNT 视频文件的帧
-
- Mat img;
- int num = cap.get(cv2::CAP_PROP_FRAME_COUNT);
- for(int 0 = 0;i < num - 1;i++)
- {
- cap.read(img);
- //do something
- //...
- }
-
- cap.release();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。