Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C++)

简介: Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C++)

Baumer工业相机


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


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


Baumer工业相机由于其性能和质量的优越和稳定,常用于高速同步采集领域,通常使用各种图像算法来提高其捕获的图像的质量。


Baumer工业相机NEOAPI SDK是用于Baumer工业相机的一款最新的软件开发工具包(SDK)。它为开发人员提供了一系列API和工具,用于与Baumer工业相机进行通信和控制,控制方式极为便捷类似Halcon的相机助手类控制方式。


Baumer工业相机堡盟相机中Binning像素合并功能是一种通过允许多个像素合并成一个较大像素的功能。它一般称为Binning模式,分为Binning 黑白模式和Binning 彩色模式。


Baumer工业相机NEOAPI SDK和短曝光功能的技术背景


Baumer工业相机的NEOAPI SDK是Baumer公司开发的针对其相机产品系列的一套软件开发工具包。该SDK提供了一组API,使开发人员可以编写专业应用程序,从而控制、捕获、处理和显示Baumer相机的图像和数据。BGAPI SDK支持多种编程语言,包括C++、C#、Visual Basic、LabVIEW、Matlab等,并提供了大量示例代码和文档,以帮助用户轻松上手,快速完成应用程序的开发。


NEOAPI SDK提供了丰富的功能,可以控制Baumer相机的所有参数,包括曝光时间、增益、白平衡、触发模式等,以及支持各种数据格式,例如Raw、BMP、JPG等,同时还提供了实时显示、数据采集、图像处理等功能,为开发人员提供了高度定制化的解决方案。此外,BGAPI SDK还支持多相机系统的开发,并可支持各种计算机操作系统,如Windows、Linux、Mac OS等。


Baumer工业相机的像素合并功能是一种允许多个像素合并成一个较大像素的功能。这一功能通常用于增加相机捕获的图像的动态范围,以及提高对光线的敏感性。


像素合并可以通过两种方式进行:水平和垂直。水平像素合并将同一行的相邻像素合并,而垂直像素合并将不同行的像素合并。


通过合并像素,相机可以产生具有更高的细节、更少的噪音和在低光照条件下更好的照明的图像。由此产生的图像通常具有更高的质量,更适合分析和处理。


总的来说,像素合并功能是工业相机的一个重要特征,可以帮助提高各行业成像应用的准确性和可靠性,如医疗成像、质量控制和监控。


Baumer工业相机中的Binning模式分为Binning黑白模式和Binning彩色模式


Baumer工业相机通过CameraExplorer软件使用Binning功能


Baumer工业相机的相机软件Camera Explorer可以可视化便捷地进行Binning功能的设置


首先,双击进入相机界面


然后选择相机页面中左上角标题菜单栏中的Widgets,并选择其中的Brightness。


最后在Camera Explorer界面的右侧会出现Image Format的功能界面


其中,Binning中的Horizontal为水平方向的像素合并,Vertical则垂直方向的像素合并。


Baumer工业相机通过NEOAPI SDK使用Binning功能


下面介绍在C++里Baumer工业相机如何通过NEOAPI SDK使用短曝光功能方式


1.引用合适的类文件


代码如下(示例):

#include <stdio.h>
#include <iostream>
#include "bgapi2_genicam/bgapi2_genicam.hpp"
#include <iostream>
#include <iostream>
#include "neoapi.hpp"


2.通过NEOAPI SDK使用Binning功能


Baumer工业相机设短曝光功能模式C++核心代码如下所示:

NeoAPI::Cam camera = NeoAPI::Cam();
camera.Connect();
camera.f().ExposureTime.Set(10000);
int width = static_cast<int>(camera.f().Width);
int height = static_cast<int>(camera.f().Height);
if (camera.IsConnected())
{   
  //  获取当前相机的图像的像素格式   
  NeoAPI::NeoString CurPixelFormat = camera.f().PixelFormat.GetString();
  CString CurPixelFormatstr = (CString)CurPixelFormat;    
  NeoAPI::FeatureList FeatureListS = camera.f().PixelFormat.GetEnumValueList();
  // 检查该相机是否存在Binning模式
  if (camera.f().BinningHorizontal.IsAvailable())
  {
    // 开启Binning功能
    camera.f().BinningHorizontalMode.Set(TRUE);
    // 设置BinningHorizontal为2
    camera.f().BinningHorizontal.Set(2);
    // 开启Binning功能
    camera.f().BinningVertical.Set(TRUE);
    // 设置BinningVertical为2
    camera.f().BinningVertical.Set(2);
    // 设置相机为自由采集模式
    camera.f().TriggerMode.Set(NeoAPI::TriggerMode::Off);
    // 启动相机开始采集  
    camera.f().AcquisitionStart.Execute();
    // 采集一张图像 
    NeoAPI::Image image = camera.GetImage();
      //  保存采集图像
      CString strtime;
    strtime.Format(_T("\\%4d%2d%2d%2d%2d%2d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
    CString  strpath = m_strDirectory + strtime + "-";
    CString  strpath2;
    strpath2.Format(_T("%s%d"), strpath, image.GetImageID());
    // 转换图像名称为NeoAPI::NeoString格式,然后保存对应路径
    USES_CONVERSION;
    std::string strpath2str(W2A(strpath2));
    const char* strpath2str2 = strpath2str.c_str();
    NeoAPI::NeoString strpath3 = strpath2str2;
    image.Save(strpath3);
    image.Save("neoapi-sdk-Binning-image");     
  }
}


Baumer工业相机使用Binning功能的优势


工业相机的像素合并功能提供了几个优势:


  1. 提高灵敏度。像素合并将相邻像素的像素值结合起来,形成一个更敏感的传感器。这有助于检测低光,提高图像质量。


  1. 减少噪音。像素合并有助于通过平均多个像素的像素值来减少图像中的噪音。这有助于实现更高的信噪比,从而获得更清晰的图像。


  1. 提高分辨率。合并像素可以通过将多个像素合并为一个像素来提高图像的分辨率。这可以帮助捕捉到图像中的精细细节。


  1. 减少数据大小。合并像素可以减少表示图像所需的数据量,这在需要传输或储存数据的应用中很有用。


总的来说,工业相机中的像素合并功能可以显著提高图像质量,使其成为各种应用中的宝贵工具,包括机器视觉、监控和科学成像。


Baumer工业相机使用Binning功能的行业应用


工业相机的像素合并功能有几个场景的应用:


  1. 图像增强。像素合并可以通过减少噪声和提高信噪比来提高图像质量。


  1. 高分辨率成像。像素合并可以使相机通过合并多个像素的数据来产生高分辨率的图像。


  1. 弱光成像。像素合并可以通过合并多个像素的数据和增加整体信号来提高相机在低光环境下的灵敏度。


  1. 深度感知。像素合并可用于通过合并立体相机的视图来创建深度图。


  1. 超高速成像。像素合并可以使相机通过合并一组像素的数据并以高速度记录来捕捉超高速的图像。


总的来说,像素合并功能在许多对清晰度和精确度要求很高的工业成像应用中非常有用。

目录
相关文章
|
5天前
|
存储 算法 搜索推荐
【C++面向对象——群体类和群体数据的组织】实现含排序功能的数组类(头歌实践教学平台习题)【合集】
1. **相关排序和查找算法的原理**:介绍直接插入排序、直接选择排序、冒泡排序和顺序查找的基本原理及其实现代码。 2. **C++ 类与成员函数的定义**:讲解如何定义`Array`类,包括类的声明和实现,以及成员函数的定义与调用。 3. **数组作为类的成员变量的处理**:探讨内存管理和正确访问数组元素的方法,确保在类中正确使用动态分配的数组。 4. **函数参数传递与返回值处理**:解释排序和查找函数的参数传递方式及返回值处理,确保函数功能正确实现。 通过掌握这些知识,可以顺利地将排序和查找算法封装到`Array`类中,并进行测试验证。编程要求是在右侧编辑器补充代码以实现三种排序算法
20 5
|
3月前
|
存储 C++ UED
【实战指南】4步实现C++插件化编程,轻松实现功能定制与扩展
本文介绍了如何通过四步实现C++插件化编程,实现功能定制与扩展。主要内容包括引言、概述、需求分析、设计方案、详细设计、验证和总结。通过动态加载功能模块,实现软件的高度灵活性和可扩展性,支持快速定制和市场变化响应。具体步骤涉及配置文件构建、模块编译、动态库入口实现和主程序加载。验证部分展示了模块加载成功的日志和配置信息。总结中强调了插件化编程的优势及其在多个方面的应用。
475 68
|
1月前
|
算法 网络协议 数据挖掘
C++是一种功能强大的编程语言,
C++是一种功能强大的编程语言,
57 14
|
5月前
|
算法框架/工具 C++ Python
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
442 0
|
4月前
|
图形学 C++ C#
Unity插件开发全攻略:从零起步教你用C++扩展游戏功能,解锁Unity新玩法的详细步骤与实战技巧大公开
【8月更文挑战第31天】Unity 是一款功能强大的游戏开发引擎,支持多平台发布并拥有丰富的插件生态系统。本文介绍 Unity 插件开发基础,帮助读者从零开始编写自定义插件以扩展其功能。插件通常用 C++ 编写,通过 Mono C# 运行时调用,需在不同平台上编译。文中详细讲解了开发环境搭建、简单插件编写及在 Unity 中调用的方法,包括创建 C# 封装脚本和处理跨平台问题,助力开发者提升游戏开发效率。
412 0
|
7月前
|
计算机视觉 C++
【见微知著】OpenCV中C++11 lambda方式急速像素遍历
【见微知著】OpenCV中C++11 lambda方式急速像素遍历
75 0
|
7月前
|
算法 Java API
在VC++中使用CxImage库读写图像实现像素操作
在VC++中使用CxImage库读写图像实现像素操作
58 0
|
8月前
|
存储 安全 C语言
C++|多态性与虚函数(1)功能绑定|向上转换类型|虚函数
C++|多态性与虚函数(1)功能绑定|向上转换类型|虚函数
|
5天前
|
C++ 芯片
【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
声明一个简单的Computer类,含有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,以及两个公有成员函数run、stop。只能在类的内部访问。这是一种数据隐藏的机制,用于保护类的数据不被外部随意修改。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。成员可以在派生类(继承该类的子类)中访问。成员,在类的外部不能直接访问。可以在类的外部直接访问。为了完成本关任务,你需要掌握。
43 18
|
5天前
|
存储 编译器 数据安全/隐私保护
【C++面向对象——类与对象】CPU类(头歌实践教学平台习题)【合集】
声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,以及两个公有成员函数run、stop。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。​ 相关知识 类的声明和使用。 类的声明和对象的声明。 构造函数和析构函数的执行。 一、类的声明和使用 1.类的声明基础 在C++中,类是创建对象的蓝图。类的声明定义了类的成员,包括数据成员(变量)和成员函数(方法)。一个简单的类声明示例如下: classMyClass{ public: int
32 13