OpenCV视频I/O(11)视频采集类VideoCapture之设置视频捕获设备的属性函数 set()的使用

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

算法描述

在 VideoCapture 中设置一个属性。
在OpenCV中,cv::VideoCapture::set() 函数用于设置视频捕获设备的属性。这些属性可以包括分辨率、帧率等。

函数原型

virtual bool cv::VideoCapture::set	
(int 	propId,double 	value 
)		

参数

  • 参数propertyId (int):
    • 描述:属性标识符,用于指定要设置的属性。
    • 示例:cv::CAP_PROP_FRAME_WIDTH(设置帧宽度)
  • 参数value (double):
    • 描述:要设置的属性值。
    • 示例:1280(设置宽度为1280像素)

属性标识符
propertyId 参数可以是以下常量之一(这里列出了一些常用的属性标识符):

cv::CAP_PROP_POS_MSEC:当前帧的位置(以毫秒为单位)
cv::CAP_PROP_POS_FRAMES:当前帧的位置(以帧数为单位)
cv::CAP_PROP_POS_AVI_RATIO:当前帧的位置(以比例为单位,范围0至1)
cv::CAP_PROP_FRAME_WIDTH:帧宽度(以像素为单位)
cv::CAP_PROP_FRAME_HEIGHT:帧高度(以像素为单位)
cv::CAP_PROP_FPS:帧率(每秒帧数)
cv::CAP_PROP_FOURCC:四字符代码(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(布尔值)

返回值

类型:bool
描述:返回值指示设置是否成功。如果返回 true,则表示设置成功;如果返回 false,则表示设置失败。

注意
即使返回 true,这也不能保证属性值已被捕获设备接受。参见 VideoCapture::get() 中的注释。

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>int main()
{// 创建一个 VideoCapture 对象cv::VideoCapture cap;// 定义摄像头设备索引int cameraIndex = 0;  // 第一个摄像头设备// 尝试打开摄像头设备if ( !cap.open( cameraIndex, cv::CAP_ANY ) ){std::cout << "Failed to open camera at index: " << cameraIndex << std::endl;return -1;}// 检查是否成功打开了摄像头设备if ( !cap.isOpened() ){std::cout << "Error opening camera at index: " << cameraIndex << std::endl;return -1;}// 设置帧宽度和高度cap.set( cv::CAP_PROP_FRAME_WIDTH, 640 );cap.set( cv::CAP_PROP_FRAME_HEIGHT, 480 );// 设置亮度和对比度cap.set( cv::CAP_PROP_BRIGHTNESS, 0.5 );  // 假设0到1之间的值cap.set( cv::CAP_PROP_CONTRAST, 0.5 );    // 假设0到1之间的值// 循环读取并显示视频帧while ( true ){// 创建一个 Mat 对象来存储视频帧cv::Mat frame;// 从视频流中读取下一帧if ( !cap.read( frame ) ){std::cout << "No frame grabbed." << std::endl;break;}// 检查是否成功读取到了帧if ( frame.empty() ){std::cout << "Frame is empty." << std::endl;break;}// 显示视频帧cv::imshow( "Camera Stream", frame );// 按 'q' 键退出循环if ( cv::waitKey( 1 ) == 'q' ){break;}}// 释放资源cap.release();cv::destroyAllWindows();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/440055.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为最新业绩出炉!上半年营收4175亿元,同比增长34%!

华为2024年上半年经营业绩分析:稳健发展,符合预期 [中国,深圳,2024年8月29日] 今日,华为发布了其2024年上半年的经营业绩,整体表现稳健,结果符合预期。在复杂多变的全球市场环境下,华为凭借强大的创新能力和市场洞察力,实现了销售收入和净利润的显著增长。 上半年,华…

C语言:预编译过程的剖析

目录 一.预定义符号和#define定义常量 二.#define定义宏 三.宏和函数的对比 四、#和##运算符 五、条件编译 在之前&#xff0c;我们已经介绍了.c文件在运行的过程图解&#xff0c;大的方面要经过两个方面。 一、翻译环境 1.预处理&#xff08;预编译&#xff09; 2.编译 3…

Spring Boot 整合 Keycloak

1、概览 本文将带你了解如何设置 Keycloak 服务器&#xff0c;以及如何使用 Spring Security OAuth2.0 将 Spring Boot 应用连接到 Keycloak 服务器。 2、Keycloak 是什么&#xff1f; Keycloak 是针对现代应用和服务的开源身份和访问管理解决方案。 Keycloak 提供了诸如单…

Unity MVC框架演示 1-1 理论分析

本文仅作学习笔记分享与交流&#xff0c;不做任何商业用途&#xff0c;该课程资源来源于唐老狮 1.一般的图解MVC 什么是MVC我就不说了&#xff0c;老生常谈&#xff0c;网上有大量的介绍&#xff0c;想看看这三层都起到什么职责&#xff1f;那就直接上图吧 2.我举一个栗子 我有…

人工智能新闻和发展 (24001)- By 10/4/2024

1. 谷歌增强了搜索中的人工智能&#xff0c;允许对图像进行语音提问。 Google adding AI to answer voiced questions about images | AP NewsGoogle is pumping more artificial intelligence into its search engine. New features will enable people to voice questions a…

15分钟学 Python 第39天:Python 爬虫入门(五)

Day 39&#xff1a;Python 爬虫入门数据存储概述 在进行网页爬虫时&#xff0c;抓取到的数据需要存储以供后续分析和使用。常见的存储方式包括但不限于&#xff1a; 文件存储&#xff08;如文本文件、CSV、JSON&#xff09;数据库存储&#xff08;如SQLite、MySQL、MongoDB&a…

无神论文解读之ControlNet:Adding Conditional Control to Text-to-Image Diffusion Models

一、什么是ControlNet ControlNet是一种能够控制模型生成内容的方法&#xff0c;能够对文生图等模型添加限制信息&#xff08;边缘、深度图、法向量图、姿势点图等&#xff09;&#xff0c;在当今生成比较火的时代很流行。 这种方法使得能够直接提供空间信息控制图片以更细粒…

PCL 1.8.1 + VTK 1.8.0 + QT5.14.2+ VS2017 环境搭建

先看看效果: PCL 1.8.1下载安装: Tags PointCloudLibrary/pcl GitHub 安装完成后: 如果VTK想重新编译的,可以看我的这篇博客:

Spring14——案例:利用AOP环绕通知计算业务层接口执行效率

前面介绍了这么多种通知类型&#xff0c;具体该选哪一种呢? 我们可以通过一些案例加深下对通知类型的学习。 34-案例&#xff1a;利用AOP环绕通知计算业务层接口执行效率 需求分析 这个需求也比较简单&#xff0c;前面我们在介绍AOP的时候已经演示过: 需求:任意业务层接口…

冯诺依曼体系|操作系统

目录 一、硬件&#xff1a;冯诺依曼体系 1.冯诺依曼体系结构 2.冯诺依曼体系结构组成 3.内存的重要性 &#xff08;1&#xff09;提升运行速度 &#xff08;2&#xff09;提升运行效率 二、软件&#xff1a;操作系统 1.什么是操作系统 &#xff08;1&#xff09;内部理…

【GeekBand】C++设计模式笔记6_Decorator_装饰模式

1. “单一职责”模式 在软件组件的设计中&#xff0c;如果责任划分的不清晰&#xff0c;使用继承得到的结果往往是随着需求的变化&#xff0c;子类急剧膨胀&#xff0c;同时充斥着重复代码&#xff0c;这时候的关键是划清责任。典型模式 DecoratorBridge 2. Decorator 装饰模…

地理空间数据存储与处理:MySQL空间数据类型的优化与应用!

在 MySQL 数据库中&#xff0c;空间数据类型用于存储和处理地理空间数据。这些数据类型允许我们在开发时可在数据库中存储和操作地理位置、几何形状和地理空间关系等信息。 一、什么是空间数据类型 MySQL 中的空间数据类型主要包括以下几种&#xff1a; GEOMETRY&#xff1a…

iMazing只能苹果电脑吗 Win和Mac上的iMazing功能有区别吗

在当今数字时代&#xff0c;管理和备份手机数据变得越来越重要。无论是转移照片、备份短信&#xff0c;还是管理应用程序&#xff0c;一个强大的工具可以大大简化这些操作。iMazing作为一款备受好评的iOS设备管理软件&#xff0c;已经成为许多用户的选择。但是&#xff0c;许多…

SpringBoot+ElasticSearch7.12.1+Kibana7.12.1简单使用

案例简介 本案例是把日志数据保存到Elasticsearch的索引中&#xff0c;并通过Kibana图形化界面的开发工具给查询出来添加的日志数据&#xff0c;完成从0到1的简单使用 ElasticSearch职责用法简介 ElasticSearch用在哪 ElasticSearch在我这个案例中&#xff0c;不是用来缓解增…

STM32编码器接口解析及抗噪声措施探讨

1. 引言 在现代控制系统中&#xff0c;编码器扮演着非常重要的角色。它就像一个精密的测量工具&#xff0c;可以告诉我们机械部件的位置和运动状态。在STM32微控制器中&#xff0c;编码器接口可以轻松地与各种编码器连接&#xff0c;实现精确的控制。我将在这里探讨STM32编码器…

图文深入理解Oracle Network配置管理(一)

List item 本篇图文深入介绍Oracle Network配置管理。 Oracle Network概述 Oracle Net 服务 Oracle Net 监听程序 <oracle_home>/network/admin/listener.ora <oracle_home>/network/admin/sqlnet.ora建立网络连接 要建立客户机或中间层连接&#xff0c;Oracle…

sublime配置(竞赛向)

我也想要有jiangly一样的sublime 先决条件 首先&#xff0c;到官网上下载最新的sublime4&#xff0c;然后在mingw官网上下载最新的mingw64 mingw64官网&#xff1a;左边菜单栏点击dowloads,然后选择MinGW-W64-builds(可能会有点慢)——然后有时候会变成选LLVM-minGW,接着选择…

人工智能专业就业方向与前景

随着产业结构升级的持续推进&#xff0c;未来行业领域对于人工智能专业人才的需求量会逐渐增加&#xff0c;一部分高校也开始陆续在本科阶段开设人工智能专业&#xff0c;以缓解人工智能领域人才缺口较大的问题。下面是小编整理的人工智能专业就业方向与前景&#xff0c;欢迎阅…

数据结构阶段测试2的一点小补充

数据结构阶段测试2的一点小补充 1.已知⼩根堆为8,15,10,21,34,16,12&#xff0c;删除关键字8之后需重建堆&#xff0c;最后的叶⼦ 节点为() A. 34 B. 21 C. 16 D. 12 解题思路 向下调整算法删除堆顶元素 &#x1f4a1; 答案&#xff1a;C 删除堆顶元素的思路&#xff1a; …

详解Java中的堆内存

详解Java中的堆内存 堆是JVM运行数据区中的一块内存空间&#xff0c;它是线程共享的一块区域&#xff08;注意了&#xff01;&#xff01;&#xff01;&#xff09;&#xff0c;主要用来保存数组和对象实例等&#xff08;其实对象有时候是不在堆中进行分配的&#xff0c;想要了…