Baumer工业相机堡盟相机在BGAPI SDK中如何实现Bitmap的复制克隆(C#)

简介: Baumer工业相机堡盟相机在BGAPI SDK中如何实现Bitmap的复制克隆(C#)

项目场景

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


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


Baumer工业相机的提供的Demo可以在回调函数中将图像Buffer数据转为Bitmap图像格式,但是Bitmap的内存图像是唯一的地址指代的,若不及时复制或者保存出去,则可能会被下一张图像所替代。


技术背景

从工业相机复制和克隆位图图像数据在某些情况下是必要的,例如:


1) 测试和故障排除:复制和克隆图像数据使工程师能够对相机和图像系统进行彻底的测试和故障排除,以确保所有组件都按预期工作。


2)数据分析: 图像数据往往需要进一步分析,用于图像处理、质量控制或其他应用。这需要对原始数据进行多份拷贝,以进行详细的分析和比较。


3) 归档和存储:复制和克隆图像数据也是必要的,以创建备份和存储原始数据供将来使用,而不改变或删除原始数据。


功能分析

Baumer工业相机的提供的Demo可以在回调函数中将图像Buffer数据转为Bitmap图像格式,但是Bitmap的内存图像是唯一的地址指代的,若不及时复制或者保存出去,则可能会被下一张图像所替代。


因此需要及时对已经转换为Bitmap格式的图像数据进行复制和克隆。


核心代码如下所示:

//回调函数中直接将buffer转为Bitmap
#region//Convert BGAPI2.Buffer to Bitmap(it will reduce the additional cost time of callback function)
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));
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;
string filenameBMP = mBufferFilled.Parent.Parent.Model + "_ImageMono8_" + mBufferFilled.FrameID + "_time_" + mBufferFilled.Timestamp + ".bmp";
string filenameBMP2 = strPath;
//对Bitmap图像数据进行复制克隆
#region//Copy the Bitmap to a new Bitmap instance and add it to the list of bitmaps(memory) 
Bitmap clone = (Bitmap)bitmap.Clone();
BitmapData data = clone.LockBits(new Rectangle(0, 0, clone.Width, clone.Height), ImageLockMode.ReadOnly, clone.PixelFormat);
clone.UnlockBits(data);
actform.listOfBitMaps.Add(clone);
#endregion

复制和克隆图像数据的优点

1. 减少数据损失: 通过复制和克隆图像数据,你可以确保图像数据被保存下来,在进一步处理过程中不会丢失。这在图像数据被多个函数或线程处理的情况下尤为重要。


2. 促进并行处理: 克隆图像数据可以使并行处理图像更容易,因为每个线程可以访问一个单独的数据副本而不需要同步。


3.简化图像处理算法: 通过对图像数据的单独拷贝进行处理,可以简化处理算法,因为他们不需要担心修改原始图像数据结构。


4.提高图像质量: 克隆图像数据可以实现图像增强技术的应用,如过滤或分割,而不改变原始图像数据。


总的来说,在工业相机SDK的回调函数中复制和克隆图像数据可以提高图像处理应用的可靠性和性能。


复制和克隆图像数据的行业应用

在Baumer工业相机SDK的回调函数中,复制和克隆图像数据的场景是有用的:


1. 当需要实时处理图像时: 通过在回调函数中复制和克隆图像数据,可以实时处理图像数据而不影响主程序的执行。


2. 当需要多个图像处理模块时: 通过克隆图像数据,可以单独开发和集成多个模块,而且代码依赖性最小。


3. 当数据安全很重要时:通过复制图像数据,可以为后期处理或备份目的保留未修改的数据。


4. 当系统稳定性很重要时:通过克隆图像数据,可以使系统更加稳定,不容易因为共享内存问题而崩溃。


总的来说,在Baumer工业相机SDK的回调功能中复制和克隆图像数据,可以在工业成像应用中获得更大的灵活性、安全性和性能。

目录
相关文章
|
5月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
85 0
|
5月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
57 0
|
5月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
54 0
|
2月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
124 1
|
5月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
69 0
|
5月前
|
存储 传感器 监控
工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
184 0
|
2月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
59 0
|
2月前
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
149 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
2月前
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
207 4
|
2月前
|
开发工具 Android开发
Flutter: Android SDK not found at this location,Android Studio not found at xxx
Flutter: Android SDK not found at this location,Android Studio not found at xxx
140 2