Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现Mono12和Mono16位深度的图像保存(C#)

简介: Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现Mono12和Mono16位深度的图像保存(C#)

Baumer工业相机


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


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


Baumer工业相机通过使用BGAPI SDK进行开发时,可以联合OpenCVSharp实现位深度为16的图像保存。


Baumer工业相机NEOAPI SDK是用于Baumer工业相机的一款最新的软件开发工具包(SDK)。它为开发人员提供了一系列API和工具,用于与Baumer工业相机进行通信和控制,控制方式极为便捷类似Halcon的相机助手类控制方式。


Baumer工业相机保存位深度12/16位图像的技术背景


工业相机通常用于需要高质量图像的分析和检查的专业环境中。这些相机被设计用来捕捉16比特的高比特深度的图像,与低比特深度的图像相比,可以捕捉到更大范围的色彩和细节。


保存位深16位图像的工业相机的技术背景涉及几个关键部分。首先,相机的图像传感器必须能够捕捉到高比特深度的图像。这是通过使用高质量的图像传感器来实现的,该传感器能够以每像素16比特的分辨率捕获数据。


其次,相机的电子设备必须能够处理和存储高比特深度的图像数据。这意味着相机需要有一个高速处理器和足够的内存来处理所产生的大量图像数据。


第三,相机的软件必须能够支持16位图像的保存。这意味着相机的固件和软件接口必须被设计成能够处理16位图像所产生的更大的文件尺寸,并且还能与工业标准文件格式如TIFF和RAW兼容。


总的来说,保存16位深度图像的工业相机的技术背景涉及高质量的图像传感器、强大的电子器件和专门的软件的组合,这些都是为了处理捕捉和存储高位深度图像的独特需求。


这里主要描述如何在C#的平台下联合NEOAPI SDKOpenCVSharp实现Mono12或者Mono16图像格式的保存功能的核心代码


代码案例分享


本文介绍使用NEOAPI SDK对Baumer的工业相机进行开发时,联合NEOAPI SDKOpenCVSharp实现Mono12或者Mono16图像格式的保存功能


堡盟相机支持Mono8、Mono12、BGR8等多种像素格式(PixelFormat)——每种格式需对应相应的OpenCV格式。与堡盟相机像素格式对应的OpenCV矩阵类型如下表所示。


如下为核心代码实现步骤:


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 NeoAPI;
using System.Runtime.InteropServices;
using System.IO;
using CSCameraDemo.Properties;
using System.Globalization;
using WindowsFormsApplication1;
using System.Threading.Tasks;
using System.Threading;
using System.Drawing.Imaging;
using OpenCvSharp;
using OpenCvSharp.Dnn;


2:NEOAPI SDK联合OpenCV进行图像采集保存Mono12/16图像


下面为在在C#环境开启相机连接相机后通过转换图像格式实现Mono12或者Mono16图像格式保存的核心代码。


如下所示:

using System;
using System.IO;
using System.Threading;
using NeoAPI;
using System;
using System.Collections.Generic;
using OpenCvSharp;
using co = System.Console;
NeoAPI.Cam camera = new NeoAPI.Cam();
camera.Connect();                                       // connect to a camera
private void SaveMono16Image_Click(object sender, EventArgs e)
{
    NeoAPI.Image image = camera.GetImage();
    //使用OpenCV转换Mat图像后保存
    string MATimagepath = pImgFileDir + "\\" + strtime + "-" + imageid + "-Mon16.bmp";
    MatType type;
    string saveimageMono8path = pImgFileDir + "\\" + strtime + "-Mono8.png";
    // 声明保存的格式为16为图像格式
    type = MatType.CV_16UC1;
    var img = new Mat((int)image.Height, (int)image.Width, type, image.ImageData);
    img.SaveImage(MATimagepath);
    image.SaveImage(saveimageMono8path);  
    string windowName = "Baumer-ImageID:" + image.ImageID;          
    Cv2.NamedWindow(windowName, WindowMode.Normal);
    Cv2.ImShow(windowName, img);
    Thread.Sleep(1000);
    img.Dispose();
    image.Dispose();
}


3:NEOAPI SDK的图像联合OpenCV转换Mono12/16图像并保存


下面为在在C#环境开启相机连接相机后通过转换图像格式实现Mono12或者Mono16图像格式保存的核心代码。


如下所示:

if (camera.f.PixelFormat.Contains("Mono12"))
{
    string saveimageMono8path = pImgFileDir + "\\" + strtime + "-Mono8.png";
    string saveimageMono16path = pImgFileDir + "\\" + strtime + "-Mono8.png";
    OpenCvSharp.Mat img = new Mat((int)image.Height, (int)image.Width, type, image.ImageData);    
    img.SaveImage(saveimageMono16path);
  image.SaveImage(saveimageMono8path);  
}


Bitmap目前已经不支持12位的图像,Mono图像只能转为8位或者16位.


工业相机使用位深度12/16位图像的优点


工业相机使用位深度为12/16位图像的优点主要体现在以下两个方面:


  • 更好的图像细节:12/16位图像可以捕捉到更多的细节和颜色深度,提供更高的图像质量。由于每个像素的比特位数更多,因此可以表达图像细节的能力更强,这个像素的颜色值更加丰富、分的更细,颜色深度就更深。此外,它可以更精确地捕捉每个像素的亮度和颜色值,相较于8位图像,能够捕捉到更丰富的颜色层次和更详细的图像信息。
  • 更广泛的动态范围:12/16位图像允许在明暗变化很大的场景中捕捉到更多的细节和颜色,以及更好的光线控制。


然而,虽然提高位深度可以增强测量的精度,但是也可能会降低系统的速度,并且提高了系统集成的难度(例如线缆增加,尺寸变大),因此在选择时需要慎重考虑。


工业相机使用位深度12/16位图像的行业应用


工业相机使用位深度为12/16位图像的行业应用非常广泛,以下是一些常见的应用场景:


  • 半导体制造:在半导体制造过程中,需要对微小的芯片进行高精度的检测和测量。使用12/16位图像可以提供更高的精度和更好的细节捕捉能力,从而确保芯片的质量。


  • 光学检测:在光学检测中,需要对物体的形状、颜色、纹理等特征进行高精度的测量和分析。使用12/16位图像可以提高测量的精度和准确性,同时也可以更好地捕捉到物体的细节信息。


  • 机器视觉:在机器视觉应用中,需要对物体进行识别、定位、跟踪等操作。使用12/16位图像可以提高识别的准确性和稳定性,同时也可以更好地捕捉到物体的颜色和纹理信息。


  • 医学影像:在医学影像领域,需要对X光片、CT扫描等影像进行高精度的分析和诊断。使用12/16位图像可以提高影像的质量和准确性,同时也可以更好地捕捉到组织和器官的细节信息。


总之,工业相机使用位深度为12/16位图像的行业应用非常广泛,可以满足各种高精度、高要求的应用场景的需求。

目录
相关文章
|
3月前
|
数据采集 JavaScript C#
C#图像爬虫实战:从Walmart网站下载图片
C#图像爬虫实战:从Walmart网站下载图片
|
4月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
321 1
|
6月前
|
并行计算 算法 C#
C# Mandelbrot和Julia分形图像生成程序更新到2010-9-14版 支持多线程计算 多核处理器
此文档是一个关于分形图像生成器的介绍,作者分享了个人开发的M-J算法集成及色彩创新,包括源代码和历史版本。作者欢迎有兴趣的读者留言交流,并提供了邮箱(delacroix_xu@sina.com)以分享资源。文中还展示了程序的发展历程,如增加了真彩色效果、圈选放大、历史记录等功能,并分享了几幅精美的分形图像。此外,还提到了程序的新特性,如导入ini文件批量输出图像和更新一批图片的功能。文档末尾附有多张程序生成的高分辨率分形图像示例。
|
6月前
|
存储 编解码 算法
C#.NET逃逸时间算法生成分形图像的毕业设计完成!晒晒功能
该文介绍了一个使用C#.NET Visual Studio 2008开发的程序,包含错误修复的Julia、Mandelbrot和优化过的Newton三种算法,生成色彩丰富的分形图像。作者改进了原始算法的效率,将内层循环的画点操作移至外部,提升性能。程序提供五种图形模式,支持放大缩小及颜色更新,并允许用户自定义画布大小以调整精度。还具备保存为高质JPG的功能。附有四张示例图片展示生成的分形效果。
|
7月前
|
存储 传感器 监控
工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
267 0
|
7月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
219 3
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
39 3
|
6天前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
42 12
|
1月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
53 4
|
3月前
|
API C#
C# 一分钟浅谈:文件系统编程
在软件开发中,文件系统操作至关重要。本文将带你快速掌握C#中文件系统编程的基础知识,涵盖基本概念、常见问题及解决方法。文章详细介绍了`System.IO`命名空间下的关键类库,并通过示例代码展示了路径处理、异常处理、并发访问等技巧,还提供了异步API和流压缩等高级技巧,帮助你写出更健壮的代码。
54 2