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();
相关推荐
北京耐用通信5 小时前
耐达讯自动化CAN转EtherCAT网关:3步配置,赋能电机启动器智能化升级
人工智能·物联网·网络协议·自动化·信息与通信
GISer_Jing5 小时前
AI资源白嫖——Trae国际版一周年福利,免费用一个月600次快速请求
人工智能·prompt·aigc
yfndsb5 小时前
从入门到落地:OpenClaw 全面介绍与全平台本地部署保姆级教程
人工智能·python·ai
陈广亮6 小时前
Claude Code Hooks 深度指南:让 AI 编程工具真正融入你的工作流
人工智能
加勒比海带666 小时前
目标检测算法——低空智能实验室开放数据集汇总附下载链接【点赞+收藏】
大数据·图像处理·人工智能·python·深度学习·目标检测·计算机视觉
机器之心6 小时前
OpenAI也搞「Mythos」?网络安全版GPT-5.4-Cyber亮相
人工智能·openai
沐曦股份MetaX6 小时前
沐曦股份曦云C系列GPU Day 0适配MiniMax M2.7 澎湃算力支持“自进化”大模型
人工智能·开源
xixixi777776 小时前
AI自主挖洞 + 通信网络扩散:全域风险指数级放大,如何构建密码-沙箱-终端联动闭环?
开发语言·网络·人工智能·ai·大模型·php·通信
颜酱6 小时前
智能体与工作流:从「想做一个应用」到「能跑通一条链」
前端·javascript·人工智能
火山引擎开发者社区6 小时前
不止对话,更能执行!火山引擎 Mobile Use Agent 全新升级,解锁企业级移动 AI 执行力
人工智能