Baumer工业相机堡盟相机使用BGAPISDK联合Halcon直接进行图像显示(Mono)(C#)(将图像数据Buffer转为HObject)

本文涉及的产品
票证核验,票证核验 50次/账号
企业资质识别,企业资质识别 200次/月
自定义KV模板,自定义KV模板 500次/账号
简介: Baumer工业相机堡盟相机使用BGAPISDK联合Halcon直接进行图像显示(Mono)(C#)(将图像数据Buffer转为HObject)

Baumer工业相机

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


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

Baumer工业相机的BGAPI SDK可以在C#的环境下提供原始的图像数据,直接将Buffer的数据转为Halcon的Hoject数据信息并进行显示。


Baumer工业相机SDK联合Halcon的技术背景

Baumer工业相机SDK是一种软件开发工具包,用于与工业相机通信和图像采集。这些SDK通常包含驱动程序和API,可以让开发人员使用多个编程语言(例如C++、C#、Python)编写应用程序。它们也提供了许多图像参数和相机参数的控制选项,以便满足各种应用需求。


Baumer工业相机的BGAPI SDK可以提供相机的图像原始数据,Halcon具有极为巨大的图像处理库,在图像处理领域非常强大,功能丰富,使用于工业视觉检测。


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


将工业相机的SDK图像转换为Halcon图像,是为了实现将工业相机采集到的图像数据导入到Halcon环境中进行处理和分析。这样可以充分利用Halcon的各种图像处理和分析工具,提高图像处理的效率和精度。


这里主要描述如何在C#的平台下实现通过Haclon直接将图像指针数据转换为HObject直接显示的核心代码,该相机为黑白相机,若为彩色相机则需要对图像进行转换,方能后续进行Halcon的转换。


代码分析

本文介绍使用Halcon对Baumer的黑白工业相机进行开发时,使用通过BGAPI SDK和Halcon直接进行图像显示的功能


1.引用合适的类文件

C#环境下核心代码如下所示:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BGAPI2;
using System.Runtime.InteropServices;
using HalconDotNet;

2.在相机图像回调函数里直接使用图像数据转换Halcon进行图像显示

后续进行图像转换为Halcon库的HObject图像并进行拼接和显示的核心代码,如下所示:

static void mDataStream_NewBufferEvent(object sender, BGAPI2.Events.NewBufferEventArgs mDSEvent)
{
    try
    {
        BGAPI2.Buffer mBufferFilled = null;
        //System.Drawing.Bitmap pBitmap = null;
        //Byte[] pImgBits;
        mBufferFilled = mDSEvent.BufferObj;
        if (mBufferFilled == null)
        {
            MessageBox.Show("Error: Buffer Timeout after 1000 ms!");
        }
        else if (mBufferFilled.IsIncomplete == true)
        {
            MessageBox.Show("Error: Image is incomplete!");
            // queue buffer again
            mBufferFilled.QueueBuffer();
        }
        else
        {
            //System.Console.Write(" Image {0, 5:d} received in memory address {1:X}\n", mBufferFilled.FrameID, (ulong)mBufferFilled.MemPtr);
            IntPtr imagebuffer = new IntPtr();
            imagebuffer = mBufferFilled.MemPtr;
            int w = 0;
            int h = 0;
            w = (int)mBufferFilled.Width;
            h = (int)mBufferFilled.Height;
            //Now you have the Imagebuffer and can do everything with it you want
            HOperatorSet.GenImage1(out actform.HImage1, "byte", w, h, imagebuffer);
            HOperatorSet.SetPart(actform.HWindowHandle, 0, 0, h - 1, w - 1);
            HOperatorSet.DispObj(actform.HImage1, actform.HWindowHandle);
            //queue buffer again
            mBufferFilled.QueueBuffer();
        }
    }
    catch (BGAPI2.Exceptions.IException ex)
    {
        {
            string str2;
    str2 = string.Format("ExceptionType:{0}! ErrorDescription:{1} in function:{2}",ex.GetType(),ex.GetErrorDescription(),ex.GetFunctionName());
    MessageBox.Show(str2);
        }
    }
    return;
}

Baumer工业相机图像通过和Halcon联动的优点

将Baumer工业相机SDK图像与Halcon连接起来可以有几个好处。


提高图像质量:Halcon是一个强大的图像处理和分析软件工具。当你将你的工业相机SDK图像连接到Halcon时,你可以利用它的功能来提高图像的质量。


更大的灵活性: 通过将工业相机SDK的图像连接到Halcon,你可以利用Halcon的灵活性和多功能性。你可以利用其先进的特性和功能,根据你的具体需要,优化你的图像处理工作流程。


更快的处理速度: Halcon对速度进行了优化,可以比其他类似工具更快地执行复杂的图像处理任务。当你将你的工业相机SDK图像链接到Halcon时,你可以受益于它的卓越性能,使你能够快速有效地处理图像。


更容易集成: Halcon的设计是为了与其他工业相机SDK和图像处理工具无缝集成。通过将你的相机SDK图像连接到Halcon,你可以得到两方面的好处:一个强大的图像处理工具和你现有的相机SDK的好处。


更好的结果: 所有这些优势最终都会带来更好的结果。通过使用Halcon来处理你的工业相机SDK图像,你可以优化你的工作流程,提高图像质量,实现更快的结果,从而获得更好的结果和更有效的流程。



Baumer工业相机图像通过和Halcon联动的行业应用

质量控制和检查:

使用Halcon先进的图像处理算法,你可以开发一个质量控制和检查系统,可以识别和分类产品或部件的缺陷和异常。通过将工业相机SDK图像与Halcon连接起来,你可以获取和分析高质量的图像,并进行实时分析。


物体识别和跟踪:

可以利用Halcon的物体识别和跟踪功能来跟踪移动物体或实时识别物体。通过将工业相机SDK与Halcon集成,你可以获得高分辨率的图像,并利用Halcon的图像处理工具来准确地检测和跟踪物体。


条形码和OCR阅读:

利用Halcon的条形码和OCR读取功能,你可以开发出读取和解码工业相机拍摄的图像中的条形码和OCR文本的系统。通过将工业相机SDK图像与Halcon连接起来,你可以捕获高质量的图像,以实现准确可靠的条形码和OCR阅读。


机器人和自动化:

Halcon可用于机器人视觉系统,使机器人能够与环境互动并执行各种任务。通过将工业相机与Halcon连接,你可以在机器人自动化过程中实现实时监控和反馈。


总的来说,将工业相机SDK图像与Halcon连接起来,可以让开发者建立先进的计算机视觉应用,充分利用两种技术的能力。

目录
相关文章
|
5月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
80 0
|
5月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
53 0
|
5月前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
50 0
|
5月前
|
存储 传感器 监控
工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
152 0
|
5月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
168 3
|
5月前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
181 3
|
9天前
|
API C#
C# 一分钟浅谈:文件系统编程
在软件开发中,文件系统操作至关重要。本文将带你快速掌握C#中文件系统编程的基础知识,涵盖基本概念、常见问题及解决方法。文章详细介绍了`System.IO`命名空间下的关键类库,并通过示例代码展示了路径处理、异常处理、并发访问等技巧,还提供了异步API和流压缩等高级技巧,帮助你写出更健壮的代码。
23 2
|
13天前
|
SQL 开发框架 安全
并发集合与任务并行库:C#中的高效编程实践
在现代软件开发中,多核处理器普及使多线程编程成为提升性能的关键。然而,传统同步模型在高并发下易引发死锁等问题。为此,.NET Framework引入了任务并行库(TPL)和并发集合,简化并发编程并增强代码可维护性。并发集合允许多线程安全访问,如`ConcurrentQueue<T>`和`ConcurrentDictionary<TKey, TValue>`,有效避免数据不一致。TPL则通过`Task`类实现异步操作,提高开发效率。正确使用这些工具可显著提升程序性能,但也需注意任务取消和异常处理等常见问题。
26 1
|
22天前
|
安全 程序员 编译器
C#一分钟浅谈:泛型编程基础
在现代软件开发中,泛型编程是一项关键技能,它使开发者能够编写类型安全且可重用的代码。C# 自 2.0 版本起支持泛型编程,本文将从基础概念入手,逐步深入探讨 C# 中的泛型,并通过具体实例帮助理解常见问题及其解决方法。泛型通过类型参数替代具体类型,提高了代码复用性和类型安全性,减少了运行时性能开销。文章详细介绍了如何定义泛型类和方法,并讨论了常见的易错点及解决方案,帮助读者更好地掌握这一技术。
42 11