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

Baumer工业相机堡盟相机如何使用自动曝光功能(自动曝光优点和行业应用)(C++)

项目场景

Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。  

Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。  

相机的自动曝光功能可以使得在光照条件不断变化的应用中也能轻松实现相机集成


技术背景

工业相机的自动曝光功能通常依赖于硬件和软件功能的结合。

在硬件方面,相机通常使用光电二极管等传感器来检测场景中的光线水平。它们还可能利用具有可变光圈的镜头,从而可以更好地控制进入相机的光量。

在软件方面,自动曝光算法通常使用反馈回路来调整相机设置,如快门速度、光圈和ISO灵敏度,以应对光线的变化。这些算法还可能考虑到一些因素,如所需的图像对比度,被拍摄场景的动态范围,以及相机的曝光测光模式(如点测,平均测,或矩阵测)。

总的来说,工业相机自动曝光的目标是确保以最佳的亮度和对比度拍摄图像,同时最大限度地减少由曝光过度或曝光不足引起的噪音和其他图像伪影。


代码分析

Baumer工业相机堡盟相机SDK示例中021_BrightnessAuto.cpp详细介绍了如何配置相机BrightnessAuto功能。

软件SDK示例地址如下所示:Baumer_GAPI_SDK_2.12.0_win_x86_64_cpp\examples\src\0_Common\021_BrightnessAuto\021_BrightnessAuto.cpp

代码整体结构相对简单,在相机初始化后进行相机的BrightnessAuto功能使用,部分核心代码如下: 

std::cout << std::endl;
std::cout << "CONFIGURE BRIGHTNESSAUTO" << std::endl;
std::cout << "########################" << std::endl << std::endl;try 
{std::cout << "  Limit exposure max to 500ms" << std::endl;pDevice->brightness_auto.SetExposureMaxValue(500000);std::cout << "  Start BrightnessAuto ONCE mode" << std::endl;pDevice->brightness_auto.SetMode(BGAPI2::BrightnessAuto::ONCE);std::cout << std::endl;DisplayBrightnessAutoSettings(&pDevice->brightness_auto);
}
catch (BGAPI2::Exceptions::IException& ex) {returncode = (returncode == 0) ? 1 : returncode;std::cout << "ExceptionType:    " << ex.GetType() << std::endl;std::cout << "ErrorDescription: " << ex.GetErrorDescription() << std::endl;std::cout << "in function:      " << ex.GetFunctionName() << std::endl;
}std::cout << "CONFIGURE BRIGHTNESSAUTO" << std::endl;
std::cout << "########################" << std::endl << std::endl;try 
{std::cout << "default: " << std::endl;std::cout << "  Algorithm: "<< GetBrightnessAutoAlgorithm(pDevice->brightness_auto.GetAlgorithm()) << std::endl;std::cout << "  ControlFeature: "<< GetBrightnessAutoControlFeature(pDevice->brightness_auto.GetControlFeature()) << std::endl;std::cout << std::endl;std::cout << "  Reset all parameters to default" << std::endl;pDevice->brightness_auto.Default();std::cout << "  Set nominal value to 75%" << std::endl;pDevice->brightness_auto.SetNominalValue(75.0);if (CheckCorrectPayloadType(pDevice)) {std::cout << "  Start CONTINUOUS mode with EXPOSURE_ONLY and SOFTWARE algorithm"<< std::endl;pDevice->brightness_auto.SetMode(BGAPI2::BrightnessAuto::CONTINUOUS,BGAPI2::BrightnessAuto::EXPOSURE_ONLY,BGAPI2::BrightnessAuto::SOFTWARE);} else {std::cout << "  Start CONTINUOUS mode with EXPOSURE_ONLY and HARDWARE algorithm,"" because camera is in JPEG mode" << std::endl;pDevice->brightness_auto.SetMode(BGAPI2::BrightnessAuto::CONTINUOUS,BGAPI2::BrightnessAuto::EXPOSURE_ONLY,BGAPI2::BrightnessAuto::HARDWARE);}std::cout << std::endl;DisplayBrightnessAutoSettings(&pDevice->brightness_auto);
}
catch (BGAPI2::Exceptions::IException& ex) {returncode = (returncode == 0) ? 1 : returncode;std::cout << "ExceptionType:    " << ex.GetType() << std::endl;std::cout << "ErrorDescription: " << ex.GetErrorDescription() << std::endl;std::cout << "in function:      " << ex.GetFunctionName() << std::endl;
}


自动曝光功能的优点

工业相机的自动曝光功能有几个优点,

1. 稳定的图像质量。有了自动曝光,相机会调整其设置,以确保拍摄的每张图像都有最佳的亮度和对比度。

2. 提高生产力。通过使用自动曝光,操作员不需要花时间手动调整相机设置,这可以提高工业环境中的生产力。

3. 减少了操作者的错误。当手动调整摄像机设置时,发生错误的可能性较大。自动曝光有助于通过自动化过程来消除这种风险。

4. 更好的图像分析。用自动曝光拍摄的图像往往具有更一致的照明和对比度,使分析和测量更容易、更准确。

总的来说,工业相机的自动曝光功能可以帮助简化操作,减少错误,并在各种工业环境中提高图像质量。。


自动曝光功能注意要点

在使用工业相机的自动曝光功能时,有几件事需要注意

1. 照明条件。确保环境中的照明条件是稳定和一致的。照明的波动会影响曝光设置,导致结果不一致。

2. 对比度。高对比度的场景可能会导致曝光过度或曝光不足的区域,所以相应地调整曝光设置是很重要的。

3. 白平衡。确保白平衡设置正确,特别是如果你使用自动白平衡。不正确的白平衡会导致颜色的转变和不准确的曝光。

4. 快门速度:快门速度决定了相机快门打开的时间,直接影响到曝光。要注意使用的快门速度,以避免运动模糊或曝光不足的图像。

5. ISO:避免使用高ISO设置,因为它可能引入噪音并降低图像质量。尽量使用最低的ISO设置。 通过注意这些因素,你可以确保你的工业相机的自动曝光功能产生准确和一致的结果。


自动曝光功能工业相机的行业应用

具有自动曝光功能的工业相机被广泛用于各个行业的多种应用。

 1. 质量控制和检查。这些相机可用于制造线,以确保产品符合特定的质量标准。相机可以检测到产品的缺陷和不正常情况,并触发警报或通知。

2. 机器视觉。具有自动曝光功能的工业相机是机器视觉应用的理想选择,在这种应用中,需要对物体进行实时跟踪、测量或检查。例如,它们可用于检测机器零件的缺陷,监测生产过程,或跟踪物体的移动。

3. 机器人技术。这些相机可以与机器人集成,为各种任务提供视觉反馈并提高准确性和精确性。它们可以用来引导机器人,验证零件的位置,并检测制造过程中的错误。

4. 监视。工业相机也可用于监控目的,如跟踪人员或车辆的移动,检测安全设施中的入侵者,并确定工作区的潜在安全危险。

5.人工智能。工业相机可以与智慧驾驶、无人飞行等AI领域的行业进行多方面的集成,是其中不可或缺的重要组成部分。

相关文章:

Baumer工业相机堡盟相机如何使用自动曝光功能(自动曝光优点和行业应用)(C++)

项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机&#xff0c;可用于各种应用场景&#xff0c;如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能&#xff0c;可以实时传输高分辨率图像。此外&#xff0c;该相机还具…...

HTML、CSS学习笔记7(移动适配:rem、less)

一、移动适配 rem&#xff1a;目前多数企业在用的解决方案vw / vh&#xff1a;未来的解决方案 1.rem&#xff08;单位&#xff09; 1.1使用rem单位设置尺寸 px单位或百分比布局可以实现吗&#xff1f; ————不可以 网页的根字号——HTML标签 1.2.rem移动适配 写法&#x…...

STM32感应开关盖垃圾桶

目录 项目需求 项目框图 ​编辑 硬件清单 sg90舵机介绍及实战 sg90舵机介绍 角度控制 SG90舵机编程实现 超声波传感器介绍及实战 超声波传感器介绍 超声波编程实战 项目设计及实现 项目需求 检测靠近时&#xff0c;垃圾桶自动开盖并伴随滴一声&#xff0c;2秒后关盖…...

进程跟线程的区别

进程跟线程的区别 文章目录进程跟线程的区别前言一.什么线程二.线程与进程的联系三.线程与进程有什么不同前言 现代所有计算机都能同时做几件事情,当一个用户程序正在运行时,计算机还能同时读取磁盘,并向屏幕打印输出正文.在一个多道操作程序中,cpu由一道程序向另外一道程的切…...

[ICLR 2016] Unsupervised representation learning with DCGANs

目录 IntroductionModel ArchitectureReferencesIntroduction 作者提出了用 CNN 搭建 GAN,使得 GAN 训练更加稳定的一系列准则,并将满足这些设计理念的模型称为 DCGANs (Deep Convolutional GANs). 此外,作者将 trained discriminators 用于图像分类任务,相比于其他无监督算…...

QT编程从入门到精通之十五:“第五章:Qt GUI应用程序设计”之“5.1 UI文件设计与运行机制”之“5.1.2 项目管理文件”

目录 第五章:Qt GUI应用程序设计 5.1 UI文件设计与运行机制 5.1.2 项目管理文件 第五章:Qt GUI应用程序设计 在“Qt 程序创建基础”上,本章将继续深入地介绍Qt Creator设计GUI应用程序的方法...

基于Three.js和MindAR实现的网页端WebAR人脸识别追踪功能的京剧换脸Demo(含源码)

前言 近段时间一直在玩MindAR的功能&#xff0c;之前一直在弄图片识别追踪的功能&#xff0c;发现其强大的功能还有脸部识别和追踪的功能&#xff0c;就基于其面部网格的例子修改了一个国粹京剧的换脸程序。如果你不了解MindAR的环境配置可以先参考这篇文章&#xff1a;基于Mi…...

动态规划思路

拉勾教育版权所有&#xff1a;https://kaiwu.lagou.com/course/courseInfo.htm?courseId3 动态规划思路 1.最优子结构 2.重复计算子机构 3.依靠递归&#xff0c;层层向上传值&#xff0c;所以编程时初始化子结构很重要 动态规划步骤 1.判断动态规划的类型 1.线性规划 >&…...

HTTPS关键词语解释和简单通讯流程

1、 什么是HTTPS HTTPS是基于HTTP的上层添加了一个叫做TLS的安全层&#xff0c;对数据的加密等操作都是在这个安全层中进行处理的&#xff0c;其底层还是应用的HTTP。 2、 什么是对称加密&#xff1b; 加密和解密都是用同一个秘钥 3、 什么是非对称加密&#xff1b; 加密和…...

“前端开发中的三种定时任务及其应用“

前端定时任务是指在一定时间间隔内&#xff0c;自动执行指定的操作或函数。在前端开发中&#xff0c;定时任务被广泛应用于诸如数据更新、定时提醒、定时刷新页面等方面。在本文中&#xff0c;我们将介绍前端中常见的三种定时任务&#xff0c;分别是 setTimeout、setInterval 和…...

华为OD机试题 - 猜字谜(JavaScript)| 机考必刷

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:猜字谜题目输入输出描述备注示例一输入输出示例二输入输出思路C…...

python@pyside样式化

文章目录refWidget类创建样式化文件qss引用样式并启动应用ref Styling the Widgets Application - Qt for PythonQt Style Sheets Reference | Qt Widgets 5.15.12 Widget类创建 创建一个简单界面(菜单主要内容)它们是水平布局 主要内容包括一段文本和一个按钮,它们是垂直布…...

C++经典15道面试题目(文末含大题)

今天给大家找了几个C面试里很有可能被问的哦&#xff0c;赶紧收藏下来去背&#xff01;&#xff01;&#xff01; 目录 1&#xff09;C中有malloc/free&#xff0c;为什么还需要new/delete? 2&#xff09;C中explicit关键字的作用? 3&#xff09;C中static关键字的作用&a…...

自动计算30天内的股价最高价源代码

我可以回答这个问题。您可以使用以下代码来计算30天内股价的最高价&#xff1a; 复制 import pandas as pd import yfinance as yf # 设置股票代码和日期范围 symbol "AAPL" start_date "2021-01-01" end_date "2021-06-30" # 获取股票…...

国外SEO升级攻略!一看就懂!

SEO是搜索引擎优化的缩写&#xff0c;它是指通过优化网站内容和结构&#xff0c;提升网站在搜索引擎中的排名&#xff0c;从而获得更多的有价值的流量。 而关键词研究和选择是SEO优化中最基础也是最关键的环节&#xff0c;它决定了网站将面向哪些用户、哪些关键词和词组将被优…...

设计模式—适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式&#xff0c;它结合了两个独立接口的功能。这种模式涉及到一个单一的类&#xff0c;该类负责加入独立的或不兼容的接口功能。举个真实的例子&#xff0c…...

OpenAI-J 如何进行测试

当你检出 OpenAI-J 项目以后&#xff0c;你可以对 OpenAI-J 进行测试。在测试之前你首先需要获得 OpenAI 的 API Key。OpenAI 的 Key通常是以 sk 开头的字符串。最简单粗暴的办法就是把获得的 key 替换掉上面的字符串&#xff0c;然后进行测试就可以了。运行 Unit 测试在我们的…...

课设-机器学习课设-实现新闻分类

✅作者简介&#xff1a;CSDN内容合伙人、信息安全专业在校大学生&#x1f3c6; &#x1f525;系列专栏 &#xff1a;课设-机器学习 &#x1f4c3;新人博主 &#xff1a;欢迎点赞收藏关注&#xff0c;会回访&#xff01; &#x1f4ac;舞台再大&#xff0c;你不上台&#xff0c;…...

关于异常控制流和系统级 I/O:进程

&#x1f4ad; 写在前面&#xff1a;本文将学习《深入理解计算机系统》的第六章 - 关于异常控制流和系统级 I/O 的 进程部分。CSAPP 是计算机科学经典教材《Computer Systems: A Programmers Perspective》的缩写&#xff0c;该教材由Randal E. Bryant和David R. OHallaron 合著…...

Unet 基于TCGA颅脑肿瘤MRI分割(交叉熵损失+多通道输出)

目录 1. 介绍 2. Unet 2.1 unet 代码 2.2 测试网络 3. dataset 数据加载 4. train 训练...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...