使用OpenCV关闭USBCamera的自动白平衡

树莓派人脸追踪系统实战:端云结合与PID控制实现 计算机视觉是人工智能领域的关键技术,其核心原理是让机器通过图像或视频数据感知和理解世界。在工程实践中,边缘计算与云端AI服务的结合成为一种高效范式,它平衡了本地实时性与云端强大算力。这种端云协同架构在物联网和嵌入式AI应用中极具价值,尤其适用于智能监控、互动装置等场景。本文聚焦于利用树莓派这一经典嵌入式平台,结合百度AI的云端人脸识别能力,构建一个实时人脸追踪系统。项目涉及图像采集、API调用、PID控制等关键技术环节,并针对舵机控制、网络延迟等常见问题提供了详细的调试方案和性能优化建议,为创客和开发者提供 阅读详情

目录

前言

背景知识

opencv里的属性set和get实现

dshow接口参考 

改造opencv

1. 增加一个自动白平衡的属性定义

 2. 在属性的get接口里添加读自动白平衡的实现

 3. 重新编译opencv后即可通过属性:

4. 使用示例


前言

本文的方法是在Windows平台上,opencv_3.4.14版本上实施并验证OK的。

VC环境下,在opencv里,通过设置属性“CV_CAP_PROP_WHITE_BALANCE_BLUE_U” 可以达到设置白平衡值的目的。

但无法通过这个属性关掉自动白平衡。

搜索到的多数方案,是对属性 CV_CAP_PROP_SETTINGS 置 1,将DShow的设置窗口调出来:

 

 我要的是程序自己去关闭自动白平衡(控制白平衡这一项后面的自动复选框),而不是让用户去手动开关。

背景知识

opencv里的属性set和get实现

打开OpenCV的源码: opencv_3.4.14\sources\modules\videoio\src\cap_dshow.cpp

接口:

double VideoCapture_DShow::getProperty(int propIdx) const

实现的是属性获取。

接口:

bool VideoCapture_DShow::setProperty(int propIdx, double propVal)

 实现的是属性设置。

 

这两个接口里都能找到:CV_CAP_PROP_WHITE_BALANCE_BLUE_U 这个属性的具体实现。

get接口:

bool videoInput::getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long &currentValue, long &flags, long &defaultValue)

set接口: 

bool videoInput::setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags, bool useDefaultValue)

 可以看到,里面都是通过dshow接口来获取及设置这些属性的:

// 获取
pAMVideoProcAmp->Get(Property, &currentValue, &flags);

// 设置
hr = pAMVideoProcAmp->Set(Property, lValue, Flags);

dshow接口参考 

Windows的dshow接口里,flag参数就是自动,手动的选项参数,参考:

IAMVideoProcAmp Interface

 

 我们看看,这个VideoProcAmpFlags是什么东西:

​

 明白了吧,dshow接口set的第三个参数Flags,数值为1时表示自动,数值为2时表示手动。

再回到opencv的源码,可以看到使用set时,传进去的flags从来没有被设置为2过。

我们需要做的就是为op

【GStreamer 】2-ubuntu v4l2-ctl 查看USB 相机基本参数 阅读详情

相关推荐

Python+Opencv 调用USB摄像头(一)

一.最简单的调用笔记本内置相机 import cv2 #引入库 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() cv2.imshow("Video", frame) #读取内容 if cv2.waitKey(10) == ord("q"): break #随时准...

Programmer_ch的博客 3万+

OpenCV每日函数 白平衡相关算法

OpenCV中其他照片处理算法模块提供了三种白平衡算法,基于WhiteBalancer类, 该算法基于灰色世界假设来缩放像素值,该假设指出所有通道的平均值应产生灰色图像。 它添加了一个修改,该修改根据像素的饱和度值对像素进行阈值处理,并且仅使用低于提供的阈值的像素来查找平均像素值。 饱和度使用以下公式计算每个像素 I 的 3 通道 RGB 图像,并且在 [0, 1] 范围内: 阈值 1 表示所有像素都用于白平衡,而阈值 0 表示不使用像素......

学以致用 知行合一 1830

使用OpenCV关闭USB相机的自动白平衡

在图像处理和计算机视觉应用中,自动白平衡是一个重要的步骤,它可以校正图像中的颜色偏差,使得图像看起来更自然。然而,有时候我们可能需要手动关闭USB相机的自动白平衡功能,以便更好地控制图像的色彩。通过以上代码,我们可以使用OpenCV库来关闭USB相机的自动白平衡功能。在本文中,我们将使用OpenCV库来关闭USB相机的自动白平衡。函数,关闭相机的自动白平衡功能。接下来,我们使用一个循环来连续读取相机图像,并在窗口中显示图像。需要注意的是,上述代码中的相机索引为0,表示使用默认的第一个USB相机。

UaCode的博客 733

5、设置USB摄像头的亮度、色调、饱和度、曝光、白平衡等信息

一、因为使用环境亮暗经常变化,需要设置USB摄像头的出图亮度等信息,所以需要调整USB摄像头模组的亮度、色调、饱和度等信息。可以通过Opencv函数单独设置,也可以调出setting界面统一配置,此次我使用的是调用整个setting属性窗口,由客户自己设置亮度等信息 属性设置的页面如下: 可以在此界面设置自动白平衡,当外部光照强度变化时,USB模组出图也会自适应变化。便于使用,不需要多次设置曝光增益等信息 二、显示时,先把图像缩放到适当比例,便于查看图像效果,调试寄存器。 ...

马鸣泽的博客 1万+

python使用opencv关闭usbcamera的自动白平衡

python使用opencv关闭usbcamera的自动白平衡

避坑指南:Unity新版InputSystem在移动端的5个常见问题及解决方案

本文针对Unity新版InputSystem在移动端开发中的常见问题,提供了5个关键解决方案,包括虚拟摇杆灵敏度调节、多点触控冲突处理、按钮反馈延迟优化、手势识别与陀螺仪数据融合以及Android/iOS平台差异处理。这些实战经验帮助开发者高效解决触控适配难题,提升移动游戏体验。

soda5的博客 404

打开UG会安装报错:initialization internal ERROR 的提示框,提示line 1344 of错误的解决方案

打开UG会安装报错:initialization internal ERROR 的提示框,提示line 1344 of错误的解决方案

Q82556499的博客 3520

BIOS硬件监控实战:如何手动读取IT8738芯片的温度与风扇数据(附代码)

本文深入探讨了如何绕过操作系统和HWMonitor等监控软件,直接通过寄存器级操作读取IT8738超级I/O芯片的硬件监控数据。文章提供了从动态定位EC空间、构建底层读写函数到解码传感器寄存器映射的完整实战指南,并附有C语言代码示例,帮助开发者理解BIOS硬件监控的底层原理,适用于定制硬件开发与故障诊断。

weixin_29192211的博客 108

Linux USB Gadget框架解析:从设备模拟到驱动开发实战

USB(通用串行总线)是现代计算机系统中应用最广泛的外设连接标准,其主从动态切换的特性使其在嵌入式系统中扮演着双重角色。与I2C、SPI等固定主从架构不同,USB设备需要同时支持主机(Host)和从机(Device)两种模式,这催生了Linux内核中独特的USB Gadget框架。该框架通过分层设计,将硬件控制器驱动(UDC)、功能逻辑(Function)和配置管理(Configfs)解耦,实现了灵活的设备模拟能力。在工程实践中,开发者可以利用Gadget框架快速实现U盘、网络适配器、串口转换器等常见USB

weixin_28007513的博客 560

永磁同步电机ADRC控制策略优化:从理论到Simulink仿真实践

本文深入探讨了永磁同步电机自抗扰控制(ADRC)策略的优化与实践。针对传统PID在动态响应、抗扰及噪声抑制方面的不足,详细解析了ADRC三大核心组件——跟踪微分器(TD)、扩张状态观测器(ESO)与非线性状态误差反馈(NLSEF)的工作原理。通过手把手的Simulink仿真教程,展示了从算法编写、模型搭建到参数整定的完整流程,并进阶实现了位置-速度双环ADRC协同控制,为高性能电机伺服系统设计提供了从理论到实践的清晰指南。

root9的博客 412

【异常】Openclaw Gateway进程异常停止问题分析与解决方案

本文分析了Gateway服务异常停止的问题,提出了三种解决方案。核心问题是缺乏进程守护和自动恢复机制,导致服务崩溃后无法自行重启。推荐方案是使用PM2进程管理工具(方案1),提供进程监控、自动重启和开机自启功能。替代方案包括自定义守护脚本(方案2)和supervisord管理(方案3)。这些方案都能有效解决当前服务脆弱性问题,显著提升服务可用性,其中PM2方案成熟度高、配置简单,是首选解决方案。实施后可将服务从人工干预转变为自动恢复,确保业务连续性。

奶爸的编程之路,也就一周冷个三天 455

项目管理知识体系(PMBOK)中的质量规划详解

你是否遇到过这些场景?软件上线后用户投诉“功能漏洞多”,团队连夜返工;装修完的房子墙面开裂,施工方和业主互相推诿;新研发的手机电池续航不达标,被迫延迟发布。这些问题的根源,往往是项目启动时没有做好质量规划。本文聚焦PMBOK中“质量规划”(Plan Quality Management)过程,覆盖其核心概念、操作步骤、工具技术与实战应用,适用于IT、建筑、制造等各类项目场景。

项目管理的博客 1117

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: raw.githubusercontent.com 地址解析错误解决办法
下一篇: Windows DLL导出符号方法
CedarDiao
博客等级 码龄19年 100粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值