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

news2024/10/6 20:30:58

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

  • Baumer工业相机
  • Baumer工业相机保存位深度12/16位图像的技术背景
  • 代码案例分享
    • 1:引用合适的类文件
    • 2:NEOAPI SDK联合OpenCV进行图像采集保存Mono12/16图像
    • 3:NEOAPI SDK的图像联合OpenCV转换Mono12/16图像并保存
  • 工业相机使用位深度12/16位图像的优点
  • 工业相机使用位深度12/16位图像的行业应用

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 SDKOpenCV实现Mono12或者Mono16图像格式的保存功能的核心代码

代码案例分享

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

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

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

1:引用合适的类文件

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

#include <stdio.h>
#include <iostream>
#include <opencv2/highgui.hpp>
#include "neoapi/neoapi.hpp"

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

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

如下所示:

#include <stdio.h>
#include <iostream>
#include <opencv2/highgui.hpp>
#include "neoapi/neoapi.hpp"

NeoAPI::Cam camera = NeoAPI::Cam();
camera.Connect();
camera.f().ExposureTime.Set(10000);

int width = static_cast<int>(camera.f().Width);
int height = static_cast<int>(camera.f().Height);


void CGigeDemoDlg::OnBnClickedBtnSaveMono16Image()
{
	// TODO: 在此添加控件通知处理程序代码
	if (camera.IsConnected())
	{		
		CString MATimagepath = pImgFileDir + "\\" + strtime + "-" + imageid + "-Mon16.bmp";
		if ((camera.f().GetPixelFormat() == "Mono12")|(camera.f().GetPixelFormat() == "Mono16"))
		{
			cv::Mat* imOriginal = new cv::Mat(height ,width ,CV_16UC1,(char*)camera.GetImageData());									
			cv::Mat imOriginal.ConvertTo(imOriginal, CV_16U, 64.0);
			cv::imwrite(MATimagepath , *imOriginal);
			delete imOriginal;
		}
	}	
}

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

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

如下所示:

int width = static_cast<int>(camera.f().Width);
int height = static_cast<int>(camera.f().Height);

if (camera.f().PixelFormat.Contains("Mono12"))
{
    CString saveimageMono8path = pImgFileDir + "\\" + strtime + "-Mono8.png";
    CString saveimageMono16path = pImgFileDir + "\\" + strtime + "-Mono16.png";
    cv::Mat* img= new cv::Mat(height ,width ,CV_16UC1,(char*)camera.GetImageData());			
    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位图像的行业应用非常广泛,可以满足各种高精度、高要求的应用场景的需求。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Asynchronous FIFO and synchronous FIFO-翻译自外网

Synchronous FIFO 先进先出 (FIFO) 是一种非常流行且有用的设计块&#xff0c;用于模块之间的同步和握手机制。 FIFO 的深度&#xff1a; FIFO 中的槽数或行数称为 FIFO 的深度。 FIFO 的宽度&#xff1a;每个槽或行中可以存储的位数称为 FIFO 的宽度。 在同步 FIFO 中&…

大屏项目:react中实现3d效果的环形图包括指引线

参考链接3d环形图 3d效果的环形图 项目需求实现方式指引线&#xff08;线的样式字体颜色&#xff09; 项目需求 需要在大屏上实现一个3d的环形图&#xff0c;并且自带指引线&#xff0c;指引线的颜色和每段数据的颜色一样&#xff0c;文本内容变成白色&#xff0c;数字内容变…

投标文件组成分析

标注组成&#xff1a; 标书内容&#xff1a; 一、前面内容 1、投标首页&#xff08;正本/副本&#xff09;/ 2、评分索引表&#xff08;来源于“招标文件的评分细则表”&#xff0c;一般在原有的“评分细则表”的后面添加一列“所在页码”&#xff0c;里面填写得分对应“页…

CentOS stream 9最小化安装说明

Server with GUI&#xff1a;An integrated , easy-to-manage server with a graphical interface. 带有图形用户界面的服务器&#xff1a;集成、易于管理的服务器&#xff0c;带有图形界面。Server&#xff1a;An integrated , easy-to-manage server. 服务器&#xff1a;集成…

服务器 conda update 失败解决方法

1. 强制 conda update 租借一台服务器&#xff0c;发现 conda 版本是4.10.3&#xff0c;需要升级&#xff0c;使用了如下命令都没有效果&#xff0c;仍然是一样的版本 conda update conda update --all conda update -n base -c defaults conda最后强制用conda-forge通道更新…

工作再忙,这个门禁管理小技巧也要学!

在现代社会&#xff0c;随着城市化和科技的迅猛发展&#xff0c;安全管理已经成为社会的一项首要任务。在这个背景下&#xff0c;门禁监控系统作为一种高效、先进的安全管理工具&#xff0c;逐渐成为各类场所、机构和企业的不可或缺的一部分。 客户案例 医疗机构 湖南某大型医…

2.IHRM人力资源 - 登录

一、登录页结构与表单开发 我们要实现的登录界面 目前的登录界面 1.1 登录页结构 复制下面的代码到views/login/index.vue页面下 <template><div class"login-container"><div class"logo"/><div class"form"><h1&…

【计算机二级考试C语言】C常量

C 常量 常量是固定值&#xff0c;在程序执行期间不会改变。这些固定的值&#xff0c;又叫做字面量。 常量可以是任何的基本数据类型&#xff0c;比如整数常量、浮点常量、字符常量&#xff0c;或字符串字面值&#xff0c;也有枚举常量。 常量就像是常规的变量&#xff0c;只…

反序列化提升刷题

例题&#xff1a; <?php //flag is in flag.php highlight_file(__FILE__); error_reporting(0); class Modifier { private $var; public function append($value) { include($value); echo $flag; } public function __invoke(){ …

Vue中keep-alive缓存的详解(深度理解)

文章目录 一、Keep-alive 是什么二、使用场景三、原理分析四、思考题&#xff1a;缓存后如何获取数据beforeRouteEnteractived 参考文献 一、Keep-alive 是什么 keep-alive是vue中的内置组件&#xff0c;能在组件切换过程中将状态保留在内存中&#xff0c;防止重复渲染DOM ke…

吉祥物如何解锁虚拟主持人身份,赋能品牌营销?

在互联网突破时空的整体语境下&#xff0c;一个吉祥物可以解锁虚拟主持人身份&#xff0c;结合动作捕捉技术&#xff0c;活跃于品牌线上线下营销活动场景&#xff0c;让吉祥物虚拟主持人凭借其“萌”、的特征&#xff0c;带给用户亲近感&#xff0c;快速拉近品牌与用户的距离&a…

对Transformer的理解。

要理解Transformer&#xff0c;需要先理解注意力机制&#xff0c;下面大部分内容来自台大教授李宏毅老师讲课资料。 注意力机制 之前使用的MLP&#xff0c;CNN&#xff0c;RNN模型可以解决一些简单序列问题&#xff0c;但当序列长度太长容易失去效果&#xff0c;原因是看了新…

怎样获取power shell 的全部可用命令?2/5(篇幅有点长,分成5份)

在power shell 窗口中&#xff0c;有一个获取全部可用命令的命令&#xff1a;get-command&#xff0c;获取到的命令有1640多个&#xff0c;够学习了吧&#xff1f;那么&#xff0c;power shell 命令有哪些类别呢&#xff1f; PowerShell命令可以分为以下几类&#xff1a; Cmdl…

统一存储双控NAS同步备份应用方案

随着业务量的增加&#xff0c;企业必须找到一种有效的解决方案保护数据安全&#xff0c;防止不可预测的存储系统故障。传统的数据备份往往是专用的数据格式&#xff0c;不能保留完整的用户目录信息。因此&#xff0c;IT 人员必须在数据恢复后重新配置才可重新恢复业务。为了解决…

Java零基础教学文档servlet(1)

【Web开发和HTTP协议】 1. Web开发概述 1.1 web概述 万维网&#xff08;英语&#xff1a;World Wide Web&#xff09;亦作WWW、Web、全球广域网&#xff0c;是一个透过互联网访问的&#xff0c;由许多互相链接的超文本组成的信息系统。英国科学家蒂姆伯纳斯-李于1989年发明了…

推荐一款通过ssh连接linux服务的开源工具WindTerm

文章目录 前言WindTerm介绍WindTerm使用主密码和锁屏总结 前言 工作一入门便是游戏服务器开发&#xff0c;所以常常有连接Linux服务器的需求&#xff0c;之前用的最多的是Xshell&#xff0c;最近这个软件个人版只能免费使用一个月了&#xff0c;超过时间会提示更新无法正常使用…

FX110网:保加利亚外汇牌照FSC,进入欧盟市场的另一扇大门

汇市经纪商们对欧盟金融工具市场法规&#xff08;MiFID&#xff09;都不会陌生。通过MiFID体系&#xff0c;欧盟所有国家的监管机构连成了一张网络。因此&#xff0c;任何想要进入欧洲市场的汇商&#xff0c;都希望获得加入MiFID监管机构的牌照&#xff0c;其中最受欢迎的莫过于…

什么是充放电振子理论?

CHAT回复&#xff1a;充放电振子模型&#xff08;Charging-Reversal Oscillator Model&#xff09;是一种解释ENSO现象的理论模型&#xff0c;这个模型把ENSO现象比喻成一个“热力学振荡系统”。 在这个模型中&#xff0c;ENSO现象由三个组成部分&#xff1a;充电&#xff08;C…

web开发学习笔记(2.js)

1.引入 2.js的两种引入方式 3.输出语句 4.全等运算符 5.定义函数 6.数组 7.数组属性 8.字符串对象的对应方法 9.自定义对象 10.json对象 11.bom属性 12.window属性 13.定时刷新时间 14.跳转网址 15.DOM文档对象模型 16.获取DOM对象&#xff0c;根据DOM对象来操作网页 如下图…

JavaScript采集各大电商平台关于预制菜酸菜鱼销售量

因为我喜欢吃酸菜鱼&#xff0c;但是自己弄又弄不来&#xff0c;想从网上找找看看&#xff0c;但是种类多&#xff0c;自己逐个选择又太浪费时间。索性利用自己专业爬虫知识&#xff0c;一边检验我最近代码水平&#xff0c;另一方面还能选择到满意的年货。过去写个各大平台预制…