Opencv-视频的读取

0. 写在前面

此篇博文主要记录使用Opencv4系列对视频的读取功能。

1. 视频的读取

cv::VideoCapture类是读取视频的,cv::VideoCapture既支持视频问价的读取,也支持从视频捕获的文件中读取视频数据,像笔记本的自带摄像头,外接USB的摄像头等。

创建对象的方式有三种:

cpp 复制代码
//1. 从输入的文件名对应的文件中读取
cv::VideoCapture capture(const string& fileName);
//2. 从视频捕捉设备ID中读取
cv::VideoCapture capture(int device);
//3. 调用无参构造函数创建对象
cv::VideoCapture capture();

创建完VideoCapture类之后,还需要将视频中的图像取出来,读取到cv::Mat矩阵中,共有两种方式,一种是read,一种是>>操作。

cpp 复制代码
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();
相关推荐
DatGuy19 小时前
Week 29: 深度学习补遗:MoE的稳定性机制与路由策略实现
人工智能·深度学习
mys551819 小时前
杨建允:AI搜索趋势对留学服务行业的影响
人工智能·geo·ai搜索优化·geo优化·ai引擎优化
Curvatureflight19 小时前
前端性能优化实战:从3秒到300ms的加载速度提升
前端·人工智能·性能优化
新智元20 小时前
仅 4 人 28 天!OpenAI 首曝 Sora 内幕:85% 代码竟由 AI 完成
人工智能·openai
受之以蒙20 小时前
Rust 与 dora-rs:吃透核心概念,手把手打造跨语言的机器人实时数据流应用
人工智能·笔记·rust
前端开发工程师请求出战20 小时前
把大模型装进口袋:HuggingFace如何让AI民主化成为现实
人工智能
亚马逊云开发者20 小时前
Amazon Connect结合Strands框架及Bedrock Agent Core的智能客服机器人解决方案(实践篇)
人工智能
谷歌开发者20 小时前
Web 开发指向标|AI 辅助功能在性能面板中的使用与功能
前端·人工智能
itwangyang52020 小时前
AIDD-人工智能药物设计-StructGuy:破解蛋白变异预测的数据泄漏难题
人工智能
rongcj20 小时前
智能眼镜成新经济现象,它是佩戴的AI,还是AI的容器?
人工智能