当前位置: 首页 > news >正文

OpenCV视频I/O(2)视频采集类VideoCapture之检索视频流的各种属性函数get()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

返回指定的 VideoCapture 属性。
VideoCapture 的 get() 函数用于检索视频流的各种属性。这个函数允许你查询视频源的状态和配置,例如分辨率、帧率等。

函数原型


virtual double cv::VideoCapture::get
(int 	propId
)const

参数

  • 参数propId 来自 cv::VideoCaptureProperties 的属性标识符(例如,cv::CAP_PROP_POS_MSEC,cv::CAP_PROP_POS_FRAMES,…)或针对视频 I/O API 后端的附加标志。

示例:

  • cv::CAP_PROP_POS_MSEC:当前视频位置(以毫秒计)。
  • cv::CAP_PROP_POS_FRAMES:当前帧的位置(以帧计)。
  • cv::CAP_PROP_POS_AVI_RATIO:当前帧位置相对于视频长度的比例(0.0 到 1.0)。
  • cv::CAP_PROP_FRAME_WIDTH:视频帧的宽度(像素)。
  • cv::CAP_PROP_FRAME_HEIGHT:视频帧的高度(像素)。
  • cv::CAP_PROP_FPS:视频流的帧率(每秒帧数)。
  • cv::CAP_PROP_FOURCC:视频编解码器的四字符代码。
  • cv::CAP_PROP_FRAME_COUNT:视频流的总帧数。
  • cv::CAP_PROP_FORMAT:当前像素格式。
  • cv::CAP_PROP_MODE:当前输入模式。
  • cv::CAP_PROP_BRIGHTNESS:图像亮度(仅限某些设备)。
  • cv::CAP_PROP_CONTRAST:图像对比度(仅限某些设备)。
  • cv::CAP_PROP_SATURATION:图像饱和度(仅限某些设备)。
  • cv::CAP_PROP_HUE:图像色调(仅限某些设备)。
  • cv::CAP_PROP_GAIN:图像增益(仅限某些设备)。
  • cv::CAP_PROP_EXPOSURE:曝光(仅限某些设备)。
  • cv::CAP_PROP_CONVERT_RGB:是否应该自动将图像转换为 RGB。
  • cv::CAP_PROP_WHITE_BALANCE:白平衡(仅限某些设备)。
  • cv::CAP_PROP_RECTIFICATION:立体摄像机的校正标志。
  • cv::CAP_PROP_MONOCHROME:是否为黑白摄像机。
  • cv::CAP_PROP_SHARPNESS:图像锐度(仅限某些设备)。
  • cv::CAP_PROP_AUTO_EXPOSURE:自动曝光(仅限某些设备)。
  • cv::CAP_PROP_GAMMA:伽玛(仅限某些设备)。
  • cv::CAP_PROP_TEMPERATURE:色温(仅限某些设备)。
  • cv::CAP_PROP_TRIGGER:触发器模式(仅限某些设备)。
  • cv::CAP_PROP_TRIGGER_DELAY:触发延迟(仅限某些设备)。
  • cv::CAP_PROP_WHITE_BALANCE_BLUE_U:蓝平衡 U(仅限某些设备)。
  • cv::CAP_PROP_WHITE_BALANCE_RED_V:红平衡 V(仅限某些设备)。
  • cv::CAP_PROP_ZOOM:变焦(仅限某些设备)。
  • cv::CAP_PROP_FOCUS:聚焦(仅限某些设备)。
  • cv::CAP_PROP_GUID:设备的 GUID(仅限某些设备)。
  • cv::CAP_PROP_ISO_SPEED:ISO 速度(仅限某些设备)。
  • cv::CAP_PROP_BACKLIGHT:背光补偿(仅限某些设备)。

返回值

类型:取决于所请求的属性,可能是 double 或其他数值类型。
描述:返回指定属性的当前值。

注意

读取/写入属性涉及许多层。在这个过程中可能会发生一些意想不到的结果。
VideoCapture -> API 后端 -> 操作系统 -> 设备驱动程序 -> 设备硬件
返回的值可能与设备实际使用的值不同,或者它可能使用设备依赖的规则进行编码(例如,步长或百分比)。实际行为取决于设备驱动程序和 API 后端。

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>int main()
{// 使用默认摄像头(索引为 0),并指定使用默认后端cv::VideoCapture cap( 0 );// 检查是否成功打开了摄像头if ( !cap.isOpened() ){std::cout << "Error opening video stream or file" << std::endl;return -1;}// 获取视频帧的宽度和高度double frameWidth  = cap.get( cv::CAP_PROP_FRAME_WIDTH );double frameHeight = cap.get( cv::CAP_PROP_FRAME_HEIGHT );// 获取帧率double fps = cap.get( cv::CAP_PROP_FPS );// 获取视频流的总帧数int frameCount = cap.get( cv::CAP_PROP_FRAME_COUNT );// 获取当前视频流的位置(毫秒)double positionMs = cap.get( cv::CAP_PROP_POS_MSEC );// 获取当前视频流的位置(帧)long positionFrames = static_cast< long >( cap.get( cv::CAP_PROP_POS_FRAMES ) );// 打印获取的信息std::cout << "Frame Width: " << frameWidth << std::endl;std::cout << "Frame Height: " << frameHeight << std::endl;std::cout << "FPS: " << fps << std::endl;std::cout << "Frame Count: " << frameCount << std::endl;std::cout << "Position (ms): " << positionMs << std::endl;std::cout << "Position (frames): " << positionFrames << std::endl;// 释放资源cap.release();return 0;
}

运行结果

Frame Width: 640
Frame Height: 480
FPS: 30
Frame Count: -1
Position (ms): 0
Position (frames): -1

相关文章:

  • css的动画属性
  • 828华为云征文|部署音乐流媒体服务器 mStream
  • vue3学习记录-computed
  • ResNet50V2:口腔癌分类
  • C# MSTest 进行单元测试
  • 考研数据结构——顺序表代码题
  • Android常用C++特性之std::sort
  • Android 安装应用-提交阶段之后剩下的操作
  • 引入Scrum激发研发体系活力
  • 【ArcGIS Pro实操第三期】多模式道路网构建(Multi-model road network construction)原理及实操案例
  • Mac屏蔽系统更新,取出红点标记如果解锁hosts文件
  • css3-----2D转换、动画
  • 【C语言指南】数据类型详解(上)——内置类型
  • 质量技术支持对用户忠诚度的影响
  • Springboot3 + MyBatis-Plus + MySql + Vue + ProTable + TS 实现后台管理商品分类(最新教程附源码)
  • [数据结构]链表的实现在PHP中
  • angular2开源库收集
  • HashMap剖析之内部结构
  • java8 Stream Pipelines 浅析
  • js操作时间(持续更新)
  • js学习笔记
  • log4j2输出到kafka
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • React中的“虫洞”——Context
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue-loader 源码解析系列之 selector
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 排序算法之--选择排序
  • 前端面试之闭包
  • 微信小程序--------语音识别(前端自己也能玩)
  • 用element的upload组件实现多图片上传和压缩
  • UI设计初学者应该如何入门?
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • #1015 : KMP算法
  • #if 1...#endif
  • #pragam once 和 #ifndef 预编译头
  • #pragma预处理命令
  • #VERDI# 关于如何查看FSM状态机的方法
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (6)添加vue-cookie
  • (Java)【深基9.例1】选举学生会
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (安卓)跳转应用市场APP详情页的方式
  • (搬运以学习)flask 上下文的实现
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (接口自动化)Python3操作MySQL数据库
  • (十七)、Mac 安装k8s
  • (数据结构)顺序表的定义
  • (五)Python 垃圾回收机制
  • (转)nsfocus-绿盟科技笔试题目
  • .NET 8.0 发布到 IIS
  • .net Application的目录