Baumer工业相机堡盟相机如何使用NEOAPI SDK实现相机的连接(C#)

简介: Baumer工业相机堡盟相机如何使用NEOAPI SDK实现相机的连接(C#)

Baumer工业相机

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


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

Baumer工业相机的NEOAPI SDK是目前最新版本的SDK类型,具有安装简单、测试方便、易于集成等特点。


Baumer工业相机SDK技术背景

工业相机的SDK(Software Development Kit)是为了方便开发人员对工业相机进行控制和图像采集而提供的一套软件工具。而Halcon是一款强大的机器视觉软件,能够进行图像处理、分析、识别等多种任务。

这里主要描述如何在C#的平台下实现相机连接的核心代码


代码分析

本文介绍使用NEOAPI SDK对Baumer工业相机进行开发时,可以简单使用Neoapi的函数与相机进行连接


第一步:先使用NEOAPI函数查找相机

C#环境下查找相机代码如下所示:


using co = System.Console;
NeoAPI.Cam camera = new NeoAPI.Cam();
camera.Connect();                              // connect to any camera
if (camera.IsConnected) {                    // if the camera is connected
    co.WriteLine(camera.f.ExposureTime.Value); // do something with the camera
}

检索连接到系统中的相机的信息

有时,事先并不知道哪些相机可能被安装在系统中,以及它们是否可以使用。通过NeoAPI::CamInfoList和NeoAPI::CamInfo类,我们提供了一个简单的方法来查找。摄像机不需要连接就可以获得这些信息,甚至可以由其他程序使用。由于CamInfoList代表的是系统的当前状态,不应该有多个对象,因此它被实现为一个单子。


NeoAPI::CamInfoList::EnablePnPEventCallback()和NeoAPI::CamInfoList::GetPnPEvent()方法可用于获取相机是否与系统连接或断开的通知


下面则是详细的相机查询核心代码:

using co = System.Console;
NeoAPI.CamInfoList infolist = NeoAPI.CamInfoList.Get();  // Get the info list
infolist.Refresh();                                      // Refresh the list to reflect the current status
String model = "";
foreach (NeoAPI.CamInfo info in infolist)
{
    model = info.ModelName;
    co.WriteLine(info.ModelName +" :: " + info.IsConnectable); // Print a list of all connected cameras with its connection status
}
NeoAPI.Cam camera = new NeoAPI.Cam();
camera.Connect(model);                               // Connect the last camera found by it's model name
co.WriteLine("Camera connected?  " + camera.IsConnected);

第二步:连接相机后对相机进行采图

后续进行图像采集核心代码,如下所示:

using co = System.Console;
NeoAPI.Cam camera = new NeoAPI.Cam();
camera.Connect();
if (camera.IsConnected) {
    camera.f.ExposureTime.Value = 50;      // set a small exposure time
    camera.f.Gain.Value = 1;               // set the gain to 1
    camera.SynchronFeatureMode = false;  // switch syncronous mode off
    camera.f.Gain.Value = 4  ;             // set a different gain
    NeoAPI.Image img = camera.GetImage();  // might not come with the expected gain of 4
    img.Save("test1");
    img = camera.GetImage();               // will come with the expected gain of 4
    img.Save("test2");
}

工业相机图像保存电脑内存的方式存储的优点

将工业相机图像存储在计算机内存中,而不是传统的存储形式,如胶片或磁带,有几个优点:


更快的访问: 检索存储在计算机内存中的图像可以立即完成,而从胶片或磁带中寻找和检索图像可能是费时和乏味的。


提高图像质量: 存储在计算机内存中的数字图像不会像胶片那样受到物理损坏或老化的影响,从而可以获得更好的图像质量并保持原始图像的完整性。


更容易分享: 数字图像可以很容易地以数字方式分享和传输到其他设备或在互联网上,使之更容易与他人合作开展工业项目。


增加存储容量: 与传统的存储形式相比,计算机内存允许更大的存储容量。工业相机图像可以很容易地存储在硬盘、固态驱动器和USB闪存驱动器上。


成本效益高: 虽然购买计算机内存存储设备的初始成本可能高于传统的存储方式,但由于不需要物理存储空间,维护和管理数字图像的长期成本往往更低。

目录
相关文章
|
8月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
101 0
|
2月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
2月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
4月前
|
SQL 网络协议 数据库连接
已解决:连接SqlServer出现 provider: Shared Memory Provider, error: 0 - 管道的另一端上无任何进程【C#连接SqlServer踩坑记录】
本文介绍了解决连接SqlServer时出现“provider: Shared Memory Provider, error: 0 - 管道的另一端上无任何进程”错误的步骤,包括更改服务器验证模式、修改sa用户设置、启用TCP/IP协议,以及检查数据库连接语句中的实例名是否正确。此外,还解释了实例名mssqlserver和sqlserver之间的区别,包括它们在默认设置、功能和用途上的差异。
|
5月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
367 1
|
8月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
89 0
|
8月前
|
存储 传感器 监控
工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
288 0
|
2月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
44 3
|
23天前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
83 12
|
2月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
79 4