首页 > 其他分享 >OpenCV视频I/O(2)视频采集类VideoCapture之检索视频流的各种属性函数get()的使用

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

时间:2024-09-27 10:49:25浏览次数:11  
标签:视频 视频流 某些 CAP PROP OpenCV 仅限 cv 设备

  • 操作系统: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

标签:视频,视频流,某些,CAP,PROP,OpenCV,仅限,cv,设备
From: https://blog.csdn.net/jndingxin/article/details/142553319

相关文章

  • 视频监控汇聚平台LntonAIServer视频分析平台噪声检测应用场景
    在现代视频监控系统中,图像质量直接影响到监控效果和系统可靠性。噪声问题作为影响图像质量的重要因素之一,亟需有效的解决方案。LntonAIServer通过引入先进的噪声检测技术,显著提升了视频监控系统的整体性能,确保了视频流的清晰度和稳定性。一、应用场景1.视频监控-公共安全:在公共......
  • AI视频激光综合驱鸟装置,AI识别+综合驱鸟 | 电网防鸟
    鸟儿爱在电网杆塔搭窝,易引起线路故障,给电网的安全运行带来隐患。不过,当遇到东方白鹳、丹顶鹤等珍稀鸟类筑巢时,是驱鸟保电,还是以鸟儿的栖息繁衍为先呢?答案自然是要护线爱鸟两手抓。通过在电力杆塔不带电的安全区域搭建人工鸟巢,可以吸引鸟类在此安心繁衍生息,而不必担心引起线......
  • 融云音视频RTC介绍
    融云提供的实时音视频(RTC)服务是基于WebRTC技术构建的,它允许开发者将实时音视频功能集成到他们的Web和移动应用程序中。融云的RTC服务支持多种平台,包括移动设备(Android、iOS、Flutter、uni-app、ReactNative)、Web(Javascript)和桌面(Electron)。融云的RTC服务具有以下特点和优势:......
  • 如何用一段文字或一张图片生成一段视频?
    找了下AI视频工具的排行,发现在这款国内好多大模型的AI视频工具都排在前面。测试了好几款,整体感觉还是非常不错,除了生成的时间比较短,清晰度和效果比自己找的会好很多。AI视频工具文成视频成品展示一个视频生成的时间大概是5-10分钟,从时间上面来讲,几乎都差不多。目前融合了......
  • vue 使用LivePlayer H5播放器播放m3u8格式视频
    一、官方网址 https://www.liveqing.com/docs/manuals/LivePlayer.html#%E5%9C%A8-vue-%E4%B8%AD%E4%BD%BF%E7%94%A8二、安装依赖npminstall@liveqing/liveplayer三、复制依赖文件在node_modules下找到这三个文件将他们复制到public文件夹下四、在index.html中引入liveplayer-li......
  • 视频压缩工具哪个好?没有充足内存的朋友用这几个工具就对了
    是不是每次录完视频,看着那惊人的文件大小就头疼不已?想发朋友圈又怕占内存的朋友快看过来吧~我有办法能让视频既拥有小巧体积又维持清晰画质——借助高质量的视频压缩手机app和软件就可以啦!今天我就来好好向大家安利几款配备智能压缩算法的优质工具,相信它们超强的实力能够帮你......
  • PDF、图片、视频压缩工具
     文件太大,不利于传输、不利于保存,我们通常情况下会想到压缩文件体积,就会使用压缩包来对文件进行压缩。每次需要文件的时候都需要先进行解压。今天分享一个压缩工具,帮助我们原格式压缩文件体积。支持压缩PDF文件,各个格式的视频文件以及图片文件。首先,奥凯丰压缩精灵支持图片......
  • 智能监控,守护绿色能源:EasyCVR在电站视频监控中心的一站式解决方案
    随着科技的飞速发展,视频监控技术在社会安全、企业管理及智慧城市建设等领域中扮演着越来越重要的角色。特别是在电力行业中,电站作为能源供应的关键设施,其安全性和稳定性至关重要。传统的人工监控方式已难以满足现代电站复杂多变的运行需求,因此,构建一个高效、稳定、智能的电站视频......
  • 探索EasyCVR视频融合平台:在视频编解码与转码领域的灵活性优势
    随着视频监控技术的飞速发展,各类应用场景对视频数据的处理需求日益复杂多样。从公共安全到智慧城市,再到工业监控,高效、灵活的视频处理能力成为衡量视频融合平台性能的重要标准。在众多解决方案中,EasyCVR视频融合平台凭借其在视频编解码、转码等能力上的强大灵活性,脱颖而出,成为行业......
  • EasyCVR智慧公园视频智能管理方案:赋能公园安全管理新高度
    随着城市化进程的加速,智慧城市建设已成为提升城市管理效率、增强居民生活质量的重要途径。智慧公园作为智慧城市的重要组成部分,其安全与管理水平直接影响着市民的休闲娱乐体验。EasyCVR智慧公园视频智能管理方案,正是基于这一背景应运而生,它集成了高清视频监控、智能分析、远程管理......