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();
相关推荐
共享家95272 分钟前
Vibe Coding 与 LangChain、LangGraph 的协同进化
人工智能
dvlinker4 分钟前
2026远程桌面安全白皮书:ToDesk/TeamViewer/向日葵核心安全性与合规性横向测评
人工智能
2的n次方_5 分钟前
CANN ascend-transformer-boost 深度解析:针对大模型的高性能融合算子库与算力优化机制
人工智能·深度学习·transformer
熊猫_豆豆6 分钟前
YOLOP车道检测
人工智能·python·算法
nimadan127 分钟前
**热门短剧小说扫榜工具2025推荐,精准捕捉爆款趋势与流量
人工智能·python
qq_124987075310 分钟前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
杜子不疼.11 分钟前
CANN算子基础框架库opbase的算子开发与扩展机制深度解析
人工智能
程序猿追12 分钟前
CANN ops-math仓库解读 数学算子的底层支撑与高性能实现
人工智能·架构
结局无敌12 分钟前
统一算子语言:cann/ops-nn 如何为异构AI世界建立通用“方言”
人工智能·cann
杜子不疼.19 分钟前
CANN计算机视觉算子库ops-cv的图像处理与特征提取优化实践
图像处理·人工智能·计算机视觉