Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C#)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C#)

  • Baumer工业相机
  • Baumer工业相机通过SDK实现Raw格式的图像保存的技术背景
  • 通过SDK获取相机信息的代码分析
    • Baumer工业相机回调函数里保存原始图像数据
    • Baumer保存Raw图像格式重要核心代码
    • Baumer工业相机保存Raw图像格式的测试
  • Baumer工业相机通过SDK实现Raw格式的图像保存的优势
  • Baumer工业相机通过SDK实现Raw格式的图像保存的行业应用

Baumer工业相机

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

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

Baumer RAW文件是一种记录了工业相机传感器的原始信息,同时记录了由相机拍摄所产生的一些原数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”。

Baumer工业相机的Camera Explorer软件功能强大,内容丰富,通过该软件可以有效的获取相机相关的全部信息,在对于相机检测项目的开发中,有时需要获取相机中图像Buffer信息和相关的数据流信息,而Camera Explorer软件可以有效的显示相关的信息。

Baumer工业相机通过SDK实现Raw格式的图像保存的技术背景

Baumer工业相机通常通过SDK(Software Development Kit)实现Raw格式的图像保存时,会利用其专门的图像处理模块和数据传输接口来处理原始图像数据。这种方式的技术背景涉及以下几个方面:

  1. 数据采集和传输:Baumer工业相机的SDK会提供用于高速数据采集和传输的接口和功能,以确保从相机传感器捕获到的Raw图像数据可以高效地传输给计算机或其他设备进行处理。

  2. 图像处理和编程接口:Baumer的SDK会提供图像处理的API和工具,以便开发人员可以在采集到的Raw图像数据上进行各种处理操作,包括像素值的访问、图像增强、颜色校正等,从而满足不同应用的需求。

  3. 校准和配置:Baumer的SDK还可以提供各种配置选项和校准工具,以便开发人员可以对相机进行校准和配置,确保从相机获取的Raw图像数据质量和准确性。

  4. 文件格式和保存:Baumer的SDK会支持将处理后的图像数据保存为Raw格式的文件,同时可能也提供其他格式的转换工具和API,以便用户能够导出不同格式的图像数据。

总的来说,Baumer工业相机通过SDK实现Raw格式的图像保存是建立在高速数据传输、图像处理和API支持的基础上,以满足工业和科学领域对高质量图像数据处理的需求。

通过SDK获取相机信息的代码分析

本文介绍使用BGAPI SDK对Baumer工业相机进行开发时,通过BGAPI SDK实现Raw格式的图像保存,从而能够做对应的参数设置和功能开发。

Baumer工业相机回调函数里保存原始图像数据

C#环境下在回调函数里保存Raw图像代码如下所示:

void mDataStream_NewBufferEvent(object sender, BGAPI2.Events.NewBufferEventArgs mDSEvent)
{try{BGAPI2.Buffer mBufferFilled = null;              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 againmBufferFilled.QueueBuffer();}else{#region//获取当前FrameIDFrameIDInt = (int)mBufferFilled.FrameID;OnNotifySetFrameID(FrameIDInt.ToString());#endregion// //将相机内部图像内存数据转为BGAPI2.Image数据,方便后续直接保存未BRW对应的BRW格式BGAPI2.Image p_image = pImgProcessor.CreateImage((uint)mBufferFilled.Width, (uint)mBufferFilled.Height, mBufferFilled.PixelFormat, mBufferFilled.MemPtr, mBufferFilled.MemSize);BGAPI2.Image TranImageMono  = pImgProcessor.CreateTransformedImage(p_image, "Mono8");//将相机内部图像内存数据转为bitmap数据System.Drawing.Bitmap bitmap  = new System.Drawing.Bitmap((int)mBufferFilled.Width, (int)mBufferFilled.Height, (int)mBufferFilled.Width,System.Drawing.Imaging.PixelFormat.Format8bppIndexed, (IntPtr)((ulong)mBufferFilled.MemPtr + mBufferFilled.ImageOffset));#region//Mono图像数据转换。彩色图像数据转换于此不同System.Drawing.Imaging.ColorPalette palette = bitmap.Palette;int nColors = 256;for (int ix = 0; ix < nColors; ix++){uint Alpha = 0xFF;uint Intensity = (uint)(ix * 0xFF / (nColors - 1));palette.Entries[ix] = System.Drawing.Color.FromArgb((int)Alpha, (int)Intensity, (int)Intensity, (int)Intensity);}bitmap.Palette = palette;#endregion//回调函数保存图像功能if (bSaveImg){//使用bitmap自带函数保存string strtime = DateTime.Now.ToString("yyyyMMddhhmmssfff");string saveimagepath = pImgFileDir + "\\" + strtime + ".jpg";//bitmap.Save(saveimagepath, System.Drawing.Imaging.ImageFormat.Bmp);//使用Baumer自定义Raw格式保存saveimagepath = pImgFileDir + "\\" + strtime + ".brw";TranImageMono.NodeList["SaveBrw"].Value = saveimagepath;   bSaveImg = false;//变量控制单次保存图像}#region//bitmap的图像数据复制pBitmapBitmap clonebitmap = (Bitmap)bitmap.Clone();BitmapData data = clonebitmap.LockBits(new Rectangle(0, 0, clonebitmap.Width, clonebitmap.Height), ImageLockMode.ReadOnly, clonebitmap.PixelFormat);clonebitmap.UnlockBits(data);pBitmap = clonebitmap;#endregion#region//将pBitmap图像数据显示在UI界面PictureBox控件上prcSource.X = 0;prcSource.Y = 0;prcSource.Width = (int)mBufferFilled.Width;prcSource.Height = (int)mBufferFilled.Height;System.Drawing.Graphics graph = System.Drawing.Graphics.FromHwnd(pictureBoxA.Handle);graph.DrawImage(pBitmap, prcPBox, prcSource, GraphicsUnit.Pixel);#endregionclonebitmap.Dispose(); //清除临时变量clonebitmap所占内存空间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保存Raw图像格式重要核心代码

//将相机内部图像内存数据转为BGAPI2.Image数据,方便后续直接保存未BRW对应的BRW格式
BGAPI2.Image p_image = pImgProcessor.CreateImage((uint)mBufferFilled.Width, (uint)mBufferFilled.Height, mBufferFilled.PixelFormat, mBufferFilled.MemPtr, mBufferFilled.MemSize);BGAPI2.Image TranImageMono  = pImgProcessor.CreateTransformedImage(p_image, "Mono8");string strtime = DateTime.Now.ToString("yyyyMMddhhmmssfff");
string saveimagepath = pImgFileDir + "\\" + strtime + ".brw";//使用Baumer自定义Raw格式保存         
TranImageMono.NodeList["SaveBrw"].Value = saveimagepath;   

Baumer工业相机保存Raw图像格式的测试

在这里插入图片描述

Baumer工业相机通过SDK实现Raw格式的图像保存的优势

通过SDK实现Raw格式的图像保存有几个优势:

  1. 灵活性:使用SDK保存图像的原始Raw格式可以保留数据的完整性,而不会出现由JPEG等压缩格式所带来的数据损失。这使得用户可以在后期处理过程中更加灵活地进行调整和编辑,从而获得更高质量的图像。

  2. 捕获更多细节:Raw格式通常能够捕获更多的图像细节和动态范围,使得在后期处理中可以更好地进行曝光和颜色校正,以及减少噪点等工作。

  3. 自定义处理:通过SDK保存Raw格式图像,用户可以利用相机制造商提供的原始数据以及自定义的图像处理算法进行更精细的图像处理,满足特定的应用需求。

Raw格式图像的保存使得用户能够获得更高质量的图像数据,但同时也需要更多的后期处理工作。因此,选择是否保存Raw格式图像取决于具体的应用需求和后期处理能力。

Baumer工业相机通过SDK实现Raw格式的图像保存的行业应用

工业相机通过SDK实现Raw格式的图像保存在许多行业应用中发挥重要作用,包括但不限于:

  1. 检测和测量应用:在制造业中,工业相机通过SDK保存Raw格式的图像可用于精确的检测和测量应用,例如缺陷检测、尺寸测量、外观质量控制等。Raw格式图像的高质量和完整性有助于确保实时检测和测量的准确性。

  2. 医学成像:医疗领域也常常利用工业相机进行医学成像,比如X射线、CT扫描、核磁共振成像等。通过SDK保存Raw格式的图像能够保留更多的图像细节和动态范围,有助于医学图像的后期处理和分析。

  3. 智能交通:在智能交通系统中,工业相机通过SDK保存Raw格式的图像可用于车牌识别、交通监控等应用。Raw格式的图像数据能提供更多细节,有助于提高识别的准确性和可靠性。

  4. 机器视觉:在自动化生产线和机器视觉系统中,工业相机通过SDK保存Raw格式的图像可用于产品检测、识别和定位等应用。Raw格式图像保留了更多的信息,有助于提高机器视觉系统的准确性和稳定性。

总的来说,工业相机通过SDK实现Raw格式的图像保存在需要高质量图像数据、精确测量和复杂分析的行业应用中具有广泛的应用前景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/292686.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

27、ResNet50处理STEW数据集,用于情感三分类+全备的代码

1、数据介绍 IEEE-Datasets-STEW:SIMULTANEOUS TASK EEG WORKLOAD DATASET &#xff1a; 该数据集由48名受试者的原始EEG数据组成&#xff0c;他们参加了利用SIMKAP多任务测试进行的多任务工作负荷实验。受试者在休息时的大脑活动也在测试前被记录下来&#xff0c;也包括在其…

15-deoxy-Δ12,14-PGJ2 ELISA kit

首款上市的15-d-PGJ2 ELISA试剂盒&#xff0c;可用于类花生酸研究 15-deoxy-Δ12,14-PGJ2&#xff08;15-d-PGJ2&#xff09;是PGD2的最终脱水产物之一&#xff0c;通过中间体Δ12-PGJ2形成。生理条件下&#xff0c;15-d-PGJ2存在于体液中&#xff0c;浓度介于10^(-12)至10^(-9…

Enge问题解决教程

目录 解决问题的一般步骤&#xff1a; 针对"Enge问题"的具体建议&#xff1a; 以下是一些普遍适用的解决问题的方法&#xff1a; 以下是一些更深入的Enge浏览器问题和解决办法&#xff1a; 浏览器性能问题&#xff1a; 浏览器插件与网站冲突&#xff1a; 浏览…

为什么C语言函数声明与定义的参数名称可以不一样呢??

为什么C语言函数声明与定义的参数名称可以不一样呢&#xff1f;? 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「C语言的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享…

不受父容器大小约束的TextView

序言 为了实现以下效果&#xff0c;特意开发了一个自定义控件。主要是红色的点赞数和评论数。 问题分析 自定义控件 该控件主要是在于忽略的父容器的大小限制&#xff0c;这样可以展示出全部内容。注意父容器的属性中需要下列配置。 package com.trs.myrb.view.count;impor…

计算机体系结构实验——Branch-Target Buffers

实验五 Branch-Target Buffers 本次实验的主要目的是加深对Branch-Target Buffers的理解。掌握使用Branch-Target Buffers减少或增加分支带来的延迟的情况。 实验内容&#xff1a; 将以下程序段修改为可利用WinMIPS64模拟器运行的程序。假设R3的初始值为R240 在使用forward…

【C++入门到精通】互斥锁 (Mutex) C++11 [ C++入门 ]

阅读导航 引言一、Mutex的简介二、Mutex的种类1. std::mutex &#xff08;基本互斥锁&#xff09;2. std::recursive_mutex &#xff08;递归互斥锁&#xff09;3. std::timed_mutex &#xff08;限时等待互斥锁&#xff09;4. std::recursive_timed_mutex &#xff08;限时等待…

rhel7/centos7升级openssh到openssh9.5-p1

openssh9.3-p2以下版本有如下漏洞 在rhel7.4/7.5/7.6均做过测试。 本文需要用到的rpm包如下&#xff1a; https://download.csdn.net/download/kadwf123/88652359 升级步骤 1、升级前启动telnet ##升级前启动telnet服务 yum -y install telnet-server yum -y install xinetd…

Redis(非关系型数据库)

Redis(非关系型数据库) 文章目录 Redis(非关系型数据库)认识Redis(Remote Dictionary Server)1.Redis的基本介绍2.Redis的应用场景2.1 取最新N个数据的操作2.2 排行榜应用,取TOP N操作2.3 需要精准设定过期时间的应用2.4 计数器应用2.5 Uniq 操作&#xff0c;获取某段时间所有数…

MATLAB遗传算法工具箱的三种使用方法

MATLAB中有三种调用遗传算法的方式&#xff1a; 一、遗传算法的开源文件 下载“gatbx”压缩包文件&#xff0c;解压后&#xff0c;里面有多个.m文件&#xff0c;可以看到这些文件的编辑日期都是1998年&#xff0c;很古老了。 这些文件包含了遗传算法的基础操作&#xff0c;包含…

【深度学习实践】换脸应用dofaker本地部署

本文介绍了dofaker换脸应用的本地部署教程&#xff0c;dofaker支持windows、linux、cpu/gpu推理&#xff0c;不依赖于任何深度学习框架&#xff0c;是一个非常好用的换脸工具。 本教程的部署系统为windows 11&#xff0c;使用CPU推理。 注意&#xff1a; 1、请确保您的所有路…

【大模型】快速体验百度智能云千帆AppBuilder搭建知识库与小助手

文章目录 前言千帆AppBuilder什么是千帆AppBuilderAppBuilder能做什么 体验千帆AppBuilderJava知识库高考作文小助手 总结 前言 前天&#xff0c;在【百度智能云智算大会】上&#xff0c;百度智能云千帆AppBuilder正式开放服务。这是一个AI原生应用开发工作台&#xff0c;可以…