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

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

  • Baumer工业相机
  • Baumer工业相机SDK技术背景
  • 代码分析
    • 第一步:先使用NEOAPI函数查找相机
    • 第二步:连接相机后对相机进行采图
  • 工业相机图像保存电脑内存的方式存储的优点


#勤写标兵挑战赛#

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");
}

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

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

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

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

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

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

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

你可能感兴趣的:(工业相机,机器视觉,图像处理,c#,数码相机,开发语言,视觉检测,人工智能)