Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像写入相机内存(C++)

news2024/11/23 9:12:32

Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像写入相机内存(C++)

  • Baumer工业相机
  • Baumer工业相机BGAPISDK和相机内存的技术背景
  • Baumer工业相机通过BGAPISDK将相机图像写入相机内存功能
    • 1.引用合适的类文件
    • 2.通过BGAPISDK将相机图像写入相机内存功能
    • 3.通过BGAPISDK将相机内存中图像释放功能
  • Baumer工业相机将相机图像写入相机内存的优势
  • Baumer工业相机将相机图像写入相机内存的行业应用

Baumer工业相机

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

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

Baumer工业相机由于其性能和质量的优越和稳定,常用于高速同步采集领域,通常使用各种图像算法来提高其捕获的图像的质量。

Baumer工业相机BGAPISDK和相机内存的技术背景

Baumer工业相机的BGAPI SDK是Baumer公司开发的针对其相机产品系列的一套软件开发工具包。该SDK提供了一组API,使开发人员可以编写专业应用程序,从而控制、捕获、处理和显示Baumer相机的图像和数据。BGAPI SDK支持多种编程语言,包括C++、C#、Visual Basic、LabVIEW、Matlab等,并提供了大量示例代码和文档,以帮助用户轻松上手,快速完成应用程序的开发。

BGAPI SDK提供了丰富的功能,可以控制Baumer相机的所有参数,包括曝光时间、增益、白平衡、触发模式等,以及支持各种数据格式,例如Raw、BMP、JPG等,同时还提供了实时显示、数据采集、图像处理等功能,为开发人员提供了高度定制化的解决方案。此外,BGAPI SDK还支持多相机系统的开发,并可支持各种计算机操作系统,如Windows、Linux、Mac OS等。

工业相机的内存是关键组件之一,它对于图像采集、存储和处理具有重要意义。内存主要负责存储相机拍摄到的原始图像数据,以便后续处理。工业相机的内存技术背景主要包括以下几方面:

图像传感器:工业相机的图像传感器将光学信息转换为电子信号。常见的图像传感器有CMOS(互补金属氧化物半导体)和CCD(电荷耦合器件)两种。CMOS在低成本和低功耗方面具有优势,而CCD在图像质量和信噪比方面具有优势。图像传感器输出的信号需要暂时存储在内存中以便进行后续处理。

DRAM:DRAM(动态随机存取内存)是一种常用的内存类型,具有较高的存储密度和较低的功耗。工业相机中使用的DRAM可以暂存捕捉到的图像数据,以及中间处理过程中产生的数据。

SRAM:SRAM(静态随机存取内存)是另一种常用的内存类型,具有较快的访问速度。相对于DRAM,SRAM由于需要更多的晶体管来存储数据,因此价格相对较高。工业相机中使用的SRAM通常用于临时存储低延迟的图像数据,例如图像处理过程中所需执行的算法。

DDR内存:DDR(双倍数据速率同步动态随机存取内存,Double Data Rate Synchronous Dynamic Random-Access Memory)是一种高速内存,主要用于计算机领域。部分高性能工业相机也采用DDR内存,以满足对实时图像处理和传输的高速需求。DDR内存有多种版本,如DDR2、DDR3、DDR4等,各种版本具有不同的性能和功耗特性。

图像存储和输出:部分工业相机可能拥有内置的闪存(如NAND flash)来存储图像数据。而实际工业应用中,很多工业相机将的图像数据通过各种接口(如GigE、USB 3.0、Camera Link等)实时传输到主机系统进行处理和存储。

综上所述,工业相机的内存技术背景受到多种因素的影响,包括图像传感器、内存类型、存储和输出等。根据具体应用场景、性能需求以及成本考虑,工业相机可以采用不同类型和规格的内存来满足要求。在不断发展的技术环境下,工业相机的内存技术也会持续创新和升级,以满足更严苛的工业应用场景需求。

本文介绍的使用BGAPI SDK将相机图像写入相机内存实现短时间高速存储的功能。

Baumer工业相机通过BGAPISDK将相机图像写入相机内存功能

下面介绍在C++里Baumer工业相机如何通过BGAPISDK将相机图像写入相机内存的方式

以Baumer VLXT.17.I相机为例,通过DataSheet可以发现相机内存为1G,可以存储满画幅图像590张
在这里插入图片描述

1.引用合适的类文件

代码如下(示例):

#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <set>
#include <vector>
#include <algorithm>
#include <string>
#include "bgapi2_genicam/bgapi2_genicam.hpp"
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>
#include <iomanip>


2.通过BGAPISDK将相机图像写入相机内存功能

Baumer工业相机将相机图像写入相机内存功能核心代码如下所示:
重要一点:将Bufferlist数量设置为内存可以存储的数量590张

SystemList 
Open a System 
Get the InterfaceList and fill it Open an Interface 
try
{
//BufferList
bufferList = mDataStream->GetBufferList();

// 590 buffers using internal buffer mode
for (int i = 0; i < 590; i++)
{    
    mBuffer = new BGAPI2::Buffer();
	bufferList->Add(mBuffer);
}

}
catch (BGAPI2.Exceptions.IException ex)
{
	
}


try
{
for (BGAPI2::BufferList::iterator bfIterator = bufferList->begin();bfIterator != bufferList->end();bfIterator++)
{
	bfIterator->second->QueueBuffer();
}

}
catch (BGAPI2.Exceptions.IException ex)
{
	
}


System.Console.Write("REGISTER NEW BUFFER EVENT TO: EVENTMODE_EVENT_HANDLER\n");
System.Console.Write("#####################################################\n\n");

try
{
	int iQBuffer = m_pBufferList->GetQueuedCount();
		
	//为相机对应数据流注册回调函数事件
	mDataStream->RegisterNewBufferEvent(BGAPI2::Events::EVENTMODE_EVENT_HANDLER);
	mDataStream->RegisterNewBufferEventHandler(this,(Events::NewBufferEventHandler) &BufferHandler);
	
}
catch (BGAPI2.Exceptions.IException ex)
{
	System.Console.Write("ExceptionType:    {0} \n", ex.GetType());
	System.Console.Write("ErrorDescription: {0} \n", ex.GetErrorDescription());
	System.Console.Write("in function:      {0} \n", ex.GetFunctionName());
}


System.Console.Write("CAMERA START\n");
System.Console.Write("############\n\n");
    

3.通过BGAPISDK将相机内存中图像释放功能


//DISABLE TRANSFER / START CAMERA
try
{
mDevice->GetRemoteNode("TransferStop")->Execute();
System.Console.Write("5.1.12   {0}transfer stopped \n", mDevice.Model);

mDevice->GetRemoteNode("AcquisitionStart")->Execute();
System.Console.Write("5.1.12   {0} started \n", mDevice.Model);
}
catch (BGAPI2.Exceptions.IException ex)
{
System.Console.Write("ExceptionType:    {0} \n", ex.GetType());
System.Console.Write("ErrorDescription: {0} \n", ex.GetErrorDescription());
System.Console.Write("in function:      {0} \n", ex.GetFunctionName());
}

//CAPTURE 680 IMAGES
System.Console.Write("\n");
System.Console.Write("CAPTURE IMAGES UNTIL MEOMORY BLOCKS FILLED\n");
System.Console.Write("########################################\n\n");

while (gMemoryCounter < 590)
{
    gMemoryCounter = (int) mDevice->GetRemoteNodeList["MemoryFilledBlocks"].Value;
    gMemoryCounter = (int) mDevice->GetRemoteNodeList["MemoryFilledBlocks"].Value;
    System.Console.Write("         MemoryFilledBlocks:                      {0}\n", gMemoryCounter);
    System.Threading.Thread.Sleep(30);
}

mDevice->GetRemoteNode("AcquisitionStop")->Execute();
System.Console.Write("5.1.12   {0} stopped \n", mDevice.Model);
System.Console.Write("\n");
mDevice->GetRemoteNode("TransferStart")->Execute();

System.Console.Write("5.1.12   {0}transfer started \n", mDevice.Model);


//CAPTURE 680 IMAGES
System.Console.Write("\n");
System.Console.Write("CAPTURE 590 IMAGES BY IMAGE CALLBACK\n");
System.Console.Write("##################################\n\n");
      
                  
while (gImageCounter < 680)
{
    System.Threading.Thread.Sleep(30);
}


System.Console.Write("CAMERA STOP\n");
System.Console.Write("###########\n\n");

Baumer工业相机将相机图像写入相机内存的优势

使用工业相机将相机图像写入相机内存具有以下优势:

高速图像捕捉:工业相机内存可以快速地存储原始图像数据,这对于需要高速连拍、或采集大量图像的工业应用场景至关重要。对于一些需要实时图像处理的任务,例如自动视觉检测、机器人导航等,高速图像捕捉具有重要意义。

缓解带宽压力:在图像采集过程中,将图像数据写入内存可以缓解相机与处理系统之间的带宽压力。这样可以避免由于通信速率限制导致的图像丢失或传输延迟,从而提高整个系统的稳定性和效率。

数据安全性:内存相比于磁盘或其他外部存储设备在在性能和稳定性方面具有优势,把图像数据存储在内存中,可以确保这些数据在系统处理过程中不易丢失,增强数据的安全性。

减轻处理压力:通过将图像写入相机内存,可以将部分的图像处理任务(例如图像质量控制、畸变校正等)在相机内部完成,从而减轻主机系统的处理压力。这有助于优化整个图像处理系统的性能,提高处理速度。

可靠性和稳定性:工业相机采用专用的内存芯片和设计,能够在各种恶劣的工作环境下保持稳定运行。将图像数据存储在内存中可以使整个系统更加可靠和稳定,避免因为外部干扰导致数据丢失或损坏。

空间和能效优化:与传统的硬盘或其他存储设备相比,内存相对轻便且具备更高的能效。空间和能源敏感的的工业应用场景,将图像数据存储在相机内存中可以节省空间和降低能耗,提高系统整体效益。

系统灵活性:将图像写入相机内存有助于实现更灵活的图像采集和处理方案。可根据需要对采集到的图像数据进行筛选、传输和处理,提高整个系统的适应性和灵活性。

Baumer工业相机将相机图像写入相机内存的行业应用

工业相机将相机图像写入相机内存的技术在许多行业中都有广泛以下是一些主要行业的应用实例:

制造业自动化:在制造业中,工业相机被用于自动化生产线的视觉检测、质量控制、产品分类和识别等方面。例如,对产品尺寸、形状、表面质量进行检测,以确保生产过程的精度和质量。

医疗设备:在医疗设备行业中,工业相机被用于如显微镜、X射线设备、内窥镜等设备的图像采集和处理,以提高诊断准确性和病理研究效率。

电子半导体:在电子半导体行业,工业相机被用于芯片检测、元器件检测、封装及焊接检测等。这些检测过程要求具有极高精度和速度,将图像写入相机内存对于实现这些要求至关重要。

机器人视觉:工业相机在机器人视觉领域有着广泛应用,如无人机、自动驾驶、服务机器人等。通过将图像写入相机内存,机器人可以快速识别和处理环境中的信息,从而实现导航、避障等功能。

包装与物流:在包装和物流行业中,工业相机用于自动化的条形码识别、货物检测、分拣系统等。图像数据的实时处理能力对于提高系统效率和准确性非常重要。

食品及制药行业:在食品和制药行业中,工业相机被用于产品检测、包装质量控制、药品识别等。通过对产品图像的实时处理,可以确保生产过程的卫生标准和产品质量。

安防监控:工业相机在安防监控系统中起着重要作用,应用于车牌识别、人脸识别、智能视频分析等。将图像写入相机内存有助于提高图像处理速度和实时性,从而实现高效的监控行为分析和预警功能。

冶金工业:在冶金工业中,工业相机可以进行高温、高压、强磁场等恶劣环境下的视频监测与图像采集。例如检测钢材生产的几何尺寸、表面质量,炼钢炉内部的状态监测等。将图像写入相机内存有助于快速对数据进行处理,提高检测效率。

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

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

相关文章

Cortext-M3系统:异常(3)

1、异常 异常响应系统是再M3内核水平上的&#xff0c;支持众多的系统异常和外部中断。1-15为系统异常&#xff0c;大于16为外部中断。除了个别异常的优先级被定死外&#xff0c;其它异常的优先级都是可编程的。优先级数值越小&#xff0c;优先级越高。CM3支持中断嵌套&#xff…

网络嗅探与ARP欺骗

目录 一、网络嗅探概述 1.1 网络嗅探的概念 1.1.2 一把双刃剑 1.1.3 特点 1.2 网络嗅探的原理 1.2.1 网络嗅探的条件 1.2.2 网卡的工作模式 1.2.3 局域网的传输技术 1.3 网络嗅探的前提 1.3.1 网卡设置为混杂模式 1.3.2 同处在一个广播式局域网内 1.4 嗅探工具的使…

4.23 TCP状态转换 4.24半关闭、端口复用

4.23 TCP状态转换 2MSL(Maximum Segment Lifetime) 主动断开连接的一方&#xff0c;最后进入一个TIME_WAIT状态&#xff0c;这个状态会持续&#xff1a;2msl msl&#xff1a;官方建议&#xff1a;2分钟&#xff0c;实际是30s 当 TCP 连接主动关闭方接收到被动关闭方发送的 FIN…

【kubernetes】部署kube-apiserver与kubectl

前言:二进制部署kubernetes集群在企业应用中扮演着非常重要的角色。无论是集群升级,还是证书设置有效期都非常方便,也是从事云原生相关工作从入门到精通不得不迈过的坎。通过本系列文章,你将从虚拟机准备开始,到使用二进制方式从零到一搭建起安全稳定的高可用kubernetes集…

Flutter 组件集录 | RawMagnifier 组件 - 拿起你的八倍镜

theme: cyanosis 1. 前言 今天看 Flutter 源码&#xff0c;偶然发现 Magnifier 组件&#xff0c;这单词不就是 放大镜 嘛! 再结合新版 Flutter 中输入文本的放大镜效果&#xff0c;直觉告诉我这玩意应该可以放大任何组件。如下所示&#xff0c;背景是一张图片&#xff0c;使用 …

0013-TIPS-pawnyable : Race-Condition

原文 Linux Kernel PWN | 040204 Pawnyable之竞态条件 Holstein v4: Race Condition 题目下载 漏洞代码 #include <linux/module.h> #include <linux/kernel.h> #include <linux/cdev.h> #include <linux/fs.h> #include <linux/uaccess.h> #i…

使用 Vite + Vue3 + Element-Plus + Pinia + Ts 搭建 Vue3 项目

使用 Vite Vue3 Element-Plus Pinia Ts 搭建 Vue3 项目 使用Vite搭建配置Router配置 Element-Plus配置sass配置Pinia配置解析 符号&#xff0c;并找到对应的路径TypeScript忽略类型检查 使用Vite搭建 Vite 需要 Node.js 版本 14.18&#xff0c;16。然而&#xff0c;有些模…

chatgpt赋能python:Python指定小数点位数的完整指南

Python指定小数点位数的完整指南 Python是一种高级编程语言&#xff0c;广泛用于科学、统计和数学计算。在许多情况下&#xff0c;我们需要对浮点数进行更精确的计算。Python 中保留小数位数的能力很强&#xff0c;本文将向您介绍如何在 Python 中指定小数点后的位数。 为什么…

购买服务器/安装宝塔

1、服务器的选择 本人知道并了解一丢丢的就这四个平台&#xff1a; 1、阿里云 2、腾讯云 3、硅云 4、亚马逊 个人觉得阿里云是YYDS&#xff0c;啥都挺方便的&#xff0c;唯一不足就是有点小贵&#xff0c;但是新用户第一次购买还是很优惠的。 腾讯云有的云服务器是真的便宜&am…

【Batch_size 与 梯度 之间的关系】

chatGPT 回答 梯度更新与批大小&#xff08;batch size&#xff09;之间有密切的关系。批大小是指在训练过程中一次迭代所使用的样本数量。 在深度学习中&#xff0c;梯度下降是一种常用的优化算法&#xff0c;用于更新模型参数以最小化损失函数。梯度是损失函数对于模型参数…

Gradio Flagging模块解析与实践

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

基于html+css的图展示135

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

大数据大作业(课程设计)

题目&#xff1a;信息爬取字数统计及可视化 内容及要求&#xff1a; 配置Hadoop平台&#xff1b;利用爬虫技术爬取任一门户网站新闻栏目一定时间段内的新闻信息&#xff0c;保存为一个或多个文件并上传到Hadoop平台以本人学号命名的文件夹下&#xff1b;利用MapReduce框架编程完…

CSS3-显示模式

显示模式 1 块级显示 2 行内显示 3 行内块显示 4 元素显示模式转换 5 拓展 1 块级显示 属性&#xff1a;display:block 显示特点&#xff1a; 1 独占一行&#xff08;一行只能显示一个&#xff09; 2 宽度默认是父元素的宽度&#xff0c;高度默认由内容撑开 3 可以设置宽高 代表…

Cortext-M3系统:异常系统(5)

1、使用中断 在CM3中&#xff0c;NVIC为我们搞定了使用中断时的很多例行任务&#xff0c;如优先级检查、入栈/出栈、取向量等。不过在NVIC能行使职能之前&#xff0c;还需要我们做好如下的初始化工作&#xff1a;建立堆栈、建立向量表、分配各中断的优先级、使能中断。 1.1 建…

node笔记_读取目录的文件

文章目录 ⭐前言⭐fs.readdirSync&#x1f496; 读取目录 不加withFileTypes&#x1f496; 读取目录 加withFileTypes&#x1f496; 读取目录时 判断元素文件还是目录 ⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于node读取目录文件 往期文章 node_wind…

【java】Jconsole 开启远程连接遇到的一些坑

文章目录 背景一、JMX二、配置远程连接2.1、Java 程序启动2.2、tomcat 启动2.3、无法远程问题排查2.4、解决方案 三、关闭 tomcat 报错3.1、问题分析3.2、问题解决 总结 背景 最近在学习 JVM&#xff0c;其中涉及到性能、内存等指标分析需要使用工具分享&#xff0c;Java 提供…

dvwa靶场通关(六)

第六关&#xff1a;Insecure CAPTCHA&#xff08;不安全的验证码&#xff09; 不安全的验证码&#xff1f;不是这个意思&#xff0c;而是指验证码验证可以被绕过。怎么绕&#xff1f;一般都是验证码的验证和最终修改的验证分离&#xff0c;导致了中间过程&#xff08;验证码的…

io.netty学习(八)零拷贝原理

目录 零拷贝 传统I/O操作存在的性能问题 零拷贝技术原理 虚拟内存 mmap/write 方式 sendfile 方式 带有 scatter/gather 的 sendfile方式 splice 方式 总结 io.netty学习使用汇总 零拷贝 零拷贝&#xff08;Zero-Copy&#xff09;是一种 I/O 操作优化技术&#xff0c…

总结906

学习目标&#xff1a; 月目标&#xff1a;6月&#xff08;线性代数强化9讲&#xff0c;背诵15篇短文&#xff0c;考研核心词过三遍&#xff09; 周目标&#xff1a;线性代数强化3讲&#xff0c;英语背3篇文章并回诵&#xff0c;检测 每日规划 今日已做&#xff1a; 1.回环背诵…