Baumer工业相机堡盟工业相机使用BGAPI SDK将图像数据转换为Bitmap的几种方式(C++)(Mono)
Baumer工业相机堡盟工业相机使用BGAPI SDK将图像数据转换为Bitmap的几种方式(C++)
- Baumer工业相机
- Baumer工业相机图像数据转为Bitmap的技术背景
- Baumer工业相机使用BGAPISDK将图像数据转换为Bitmap的几种方式
- 1.引用合适的类文件
- 2.BGAPI SDK原始图像数据为Bitmap的几种方式(Mono)
- Baumer工业相机图像转换为Bitmap图像的优势
- Baumer工业相机图像转换为Bitmap图像的行业应用
Baumer工业相机
Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。
Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。
Baumer工业相机由于其性能和质量的优越和稳定,常用于高速同步采集领域,通常使用各种图像算法来提高其捕获的图像的质量。
Baumer工业相机图像数据转为Bitmap的技术背景
将工业相机图像数据转换为位图格式通常包括几个步骤:
- 从工业相机中获取图像数据,这可能需要使用专门的图像采集设备。
- 将图像数据从相机采集的原始格式转换为可由软件处理的标准化格式。
- 对图像数据进行预处理,以纠正原始图像中可能存在的失真或其他问题。
- 将预处理后的图像数据转换为位图格式,这是一种常用的文件格式,用于在计算机系统上存储图像。
这些步骤的具体技术细节会因所使用的具体相机和软件的不同而不同,但这个过程中使用的一些常用工具和技术可能包括:
- SDK(软件开发工具包),提供访问相机硬件和处理原始图像数据的库和API
- 图像处理软件,如MATLAB或OpenCV,可用于纠正图像失真并对图像数据应用过滤器或其他调整。
- 图像转换库,如ImageMagick或GDAL,可用于将预处理的图像数据转换为位图格式。
本文这里介绍使用BGAPISDK的方法转换Baumer工业相机图像数据为Bitmap图像的几种方法(Mono)。
Baumer工业相机使用BGAPISDK将图像数据转换为Bitmap的几种方式
下面介绍在C++里Baumer工业相机如何使用BGAPISDK转换原始图像数据为Bitmap的几种方式(Mono)
1.引用合适的类文件
代码如下(示例):
#pragma once
#include "bgapi2_genicam.hpp"
using namespace BGAPI2;
2.BGAPI SDK原始图像数据为Bitmap的几种方式(Mono)
如下转换格式仅限于Mono格式的图像数据转换Bitmap。
第一种方式如下所示:
int width = 0, height = 0;
width = (int)pBufferFilled->GetWidth();height = (int)pBufferFilled->GetHeight(); //获取当前图像像素长宽
CString PixelFormat1 = (CString)pBufferFilled->GetPixelFormat(); //获取当前图像像素格式
imagebuffer = (BYTE*)((bo_int64)pBufferFilled->GetMemPtr()+pBufferFilled->GetImageOffset());//获取当前图像数据Gdiplus::Rect rc = Gdiplus::Rect(0,0,width,height);#pragma region 黑白相机代码:像素格式为mono时转Bitmap的代码,彩色相机此处代码不同
if(pDlg->m_pBitmap == NULL)
{pDlg->m_pBitmap = new Gdiplus::Bitmap(width,height,PixelFormat8bppIndexed);
}
Gdiplus::BitmapData lockedbits;
Gdiplus::ColorPalette * pal = (Gdiplus::ColorPalette*)new BYTE[sizeof(Gdiplus::ColorPalette)+255*sizeof(Gdiplus::ARGB)];
pal->Count=256;
for(UINT i=0;i<256;i++)
{UINT color=i*65536+i*256+i;color= color|0xFF000000;pal->Entries[i]=color;
}
pDlg->m_pBitmap->SetPalette(pal);
#pragma endregion #pragma region 生成Bitmap图像
Gdiplus::Status ret = pDlg->m_pBitmap->LockBits(&rc,Gdiplus::ImageLockModeWrite,PixelFormat8bppIndexed,&lockedbits);
BYTE* pixels = (BYTE*)lockedbits.Scan0;
BYTE* src = (BYTE*)imagebuffer;
for (int row = 0; row < height; ++row)
{CopyMemory(pixels, src, lockedbits.Stride);pixels += width;src += width;
}
pDlg->m_pBitmap->UnlockBits(&lockedbits);
#pragma endregion
第二种方式如下所示:
//将相机内部图像内存数据转为BGAPI2 Image
BGAPI2::Image* pImage = pDlg->m_imgProcessor->CreateImage((bo_uint)pBufferFilled->GetWidth(),(bo_uint)pBufferFilled->GetHeight(),pBufferFilled->GetPixelFormat(),pBufferFilled->GetMemPtr(),pBufferFilled->GetMemSize());
BGAPI2::Image* pTranImage = pDlg->m_imgProcessor->CreateTransformedImage(pImage, "Mono8");int width = (int)pTranImage->GetWidth();
int height = (int)pTranImage->GetHeight();
imagebuffer = (BYTE*)((bo_int64)pTranImage->GetBuffer()+pBufferFilled->GetImageOffset());#pragma region 生成//制作一个相关大小的空白黑白Bitmap图像
if (pDlg->m_pBitmap == NULL)
{pDlg->m_pBitmap = new Gdiplus::Bitmap(width, height, PixelFormat8bppIndexed);
}
Gdiplus::BitmapData lockedbits;
Gdiplus::ColorPalette * pal = (Gdiplus::ColorPalette*)new BYTE[sizeof(Gdiplus::ColorPalette) + 255 * sizeof(Gdiplus::ARGB)];
pal->Count = 256;
for (UINT i = 0;i<256;i++)
{UINT color = i * 65536 + i * 256 + i;color = color | 0xFF000000;pal->Entries[i] = color;
}
pDlg->m_pBitmap->SetPalette(pal);
#pragma endregion #pragma region //将图像数据写入前面生成的空白Bitmap图像
Gdiplus::Rect rc = Gdiplus::Rect(0,0,width,height);
Gdiplus::Status ret = pDlg->m_pBitmap->LockBits(&rc, Gdiplus::ImageLockModeWrite, PixelFormat8bppIndexed, &lockedbits);
BYTE* pixels = (BYTE*)lockedbits.Scan0;
BYTE* src = (BYTE*)imagebuffer;
for (int row = 0; row < height; ++row)
{CopyMemory(pixels, src, lockedbits.Stride);pixels += width;src += width;
}
pDlg->m_pBitmap->UnlockBits(&lockedbits);
#pragma endregion
Baumer工业相机图像转换为Bitmap图像的优势
-
兼容性: Bitmap图像具有普遍的兼容性,几乎可以在任何设备或平台上查看,包括电脑、智能手机和平板电脑。
-
简化处理: Bitmap图像可以很容易地使用标准的图像处理软件进行处理和编辑,使其成为工业应用中自动处理的理想选择。
-
高质量的图像: Bitmap图像提供高分辨率和色彩深度,从而产生高质量的图像,准确捕捉物体和场景的细节。
-
减少文件大小: Bitmap图像的尺寸通常比其他图像格式小,这使得它们更容易存储和传输。
-
易于整合: Bitmap图像很容易与其他软件和系统集成,使它们成为广泛的工业应用的理想选择。
Baumer工业相机图像转换为Bitmap图像的行业应用
-
质量控制: Bitmap图像可用于检测产品的缺陷、损坏或不完善之处。例如,在汽车行业,Bitmap图像可用于识别车身的划痕、凹痕和其他缺陷。
-
2.机器视觉: Bitmap图像可用于机器视觉系统,在制造过程中检测和检查产品的部件。它们可以用来测量尺寸,检查正确的装配,并检测缺陷或故障。
-
医学成像: Bitmap图像被广泛用于医学成像应用,如X射线、CT扫描和MRI扫描。它们可以用来帮助诊断病情和计划治疗。
-
- 机器人技术: Bitmap图像可用于机器人应用,在生产过程中向机器人提供视觉反馈。它们使机器人能够识别和绕过障碍物,并执行任务,如精确地挑选和放置物体。
-
- 监视: Bitmap图像可用于监控系统,以检测和识别入侵者或嫌疑人。它们可以用来捕捉车牌、人脸和其他识别特征的图像。
相关文章:
Baumer工业相机堡盟工业相机使用BGAPI SDK将图像数据转换为Bitmap的几种方式(C++)(Mono)
Baumer工业相机堡盟工业相机使用BGAPI SDK将图像数据转换为Bitmap的几种方式(C) Baumer工业相机Baumer工业相机图像数据转为Bitmap的技术背景Baumer工业相机使用BGAPISDK将图像数据转换为Bitmap的几种方式1.引用合适的类文件2.BGAPI SDK原始图像数据为Bi…...
C++笔试笔记2
C笔试笔记2 百富计算机的笔试 const限定符:首先作用于左边,如果左边没东西,就作用于右边。 const int: 左边没有内容,所以const作用于右边,就是“整型常量”。等同于int const; int * const&am…...
手写Spring框架
手写Spring框架 各位道友,我发现现在贼卷底层代码,看完源码发下几天后,额!!!我当时看了啥! 还是自己写个迷你的spring框架,这样印象更加深刻,上干货,代码仓…...
微服务学习笔记--(Docker)
目录 初识DockerDcoker的基本操作Dockerfile自定义镜像Docker-ComposeDocker镜像服务 初始Docter 什么是DockerDocker和虚拟机的区别Docker架构安装Docker 初识Docker-什么是docker 项目部署的问题 大型项目组件较多,运行环境也较为复杂,部署时会碰…...
ChatGPT 国内版免费
ChatGPT 是最新的聊天机器人技术,它可以让你更快地完成各种任务。如果你想要一个在国内的免费版本,你来对地方了!在这篇文章中,我们将会分享与你 ChatGPT的最新信息,以及在国内使用 ChatGPT 的方法。如果你想要了解更多…...
推荐5个免费好用的UI模板网站!
1、即时设计 即时设计资源广场是一个聚集了大量优秀设计作品和大厂设计系统超过3000个UI组件库的设计师灵感库。该广场每月更新上百个精品模板,且还将这些模板分门别类按不同类型素材进行分类,其丰富的设计资源包括移动设计、网页设计、插画、线框图、矢…...
linux 安装 maven 3.8 版本
文章目录 1:maven 仓库官网 2、下载安装包 3、使用:Xftp 上传到你想放的目录 4、解压文件 编辑 5、配置环境变量 编辑 6、刷新 /etc/profile 文件 7、查看maven 版本 1:maven 仓库官网 Maven – Download Apache Mavenhttps://mave…...
Redis的三种持久化策略及选取建议
文章目录 Redis的三种持久化策略及选取建议前言RDB(快照)概述优缺点 AOF(追加文件)概述优缺点AOF刷盘策略AOF重写 选取正确的持久化策略AOF和RDB的选择AOF与RDB的混合模式AOF重写和RDB持久化的冲突AOF校验机制三种模式的选择建议 …...
力扣LCP 33. 蓄水
LCP 33. 蓄水 给定 N 个无限容量且初始均空的水缸,每个水缸配有一个水桶用来打水,第 i 个水缸配备的水桶容量记作 bucket[i]。有以下两种操作: 升级水桶:选择任意一个水桶,使其容量增加为 bucket[i]1 蓄水࿱…...
内网渗透(八十一)之搭建Exchange服务器
搭建Exchange服务器 环境安装准备 1、Windows Server 2012 R2以管理员身份运行Windows Powershell,安装必需的 Windows组件: Install-WindowsFeature NET-Framework-45-Features, Server-Media-Foundation, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInt…...
web缓存Squid代理服务
缓存网页对象,减少重复请求 squid代理服务器,主要提供缓存加速,应用层过滤控制的功能 代理工作机制 1.代替客户机向网站请求数据,从而可以隐藏用户的真实ip地址 2.将获得的网页数据(静态web元素)保存到缓…...
vue实现聊天框自动滚动
需求 1、聊天数据实时更新渲染到页面 2、页面高度随聊天数据增加而增加 3、竖向滚动 4、当用户输入聊天内容或者接口返回聊天内容渲染在页面后,自动滚动到底部 5、提供点击事件操控滚动条上下翻动 环境依赖 vue:vue…...
项目中遇到的一些问题总结(六)
Minio Minio是一个开源的分布式对象存储系统,它使用纠删码技术来保护数据。纠删码技术是一种恢复丢失和损坏数据的数学算法,它将数据分块冗余的分散存储在各个节点的磁盘上,从而提供了一定程度的数据可靠性和冗余性。 在Minio中,…...
Linux线程5——生产消费模型
生产消费模型 1个交易场所:超市 2种角色:生产者/消费者 3种关系:生产者和生产者(竞争关系也叫互斥关系),消费者和消费者(竞争关系同样是互斥关系),生产者和消费者(互斥,同步关系:生产完再消费或消费完再生产)。 以上是生产消费模型遵守的“321”原则。 生产者和消…...
Vue + Springboot 文件上传项目笔记(一)
Vue Springboot 文件上传项目笔记(一) 前端 使用脚手架创建项目 vue create vue_fileuploaddemo等待命令执行完毕添加 element-ui 组件 E:\java\idea_java_maven\vue_fileuploaddemo>yarn add element-ui yarn add v1.22.19 [1/4] Resolving pac…...
【华为OD机试真题2023B卷 JAVA】座位调整
华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 座位调整 知识点迭代 时间限制:1s 空间限制:256MB 限定语言:C(clang11), C++(clang++11), Java(javac 1.8), Python3(3.9), JavaScript Node(12.18.2), Go(1.14.4) 题目描述: 疫情期间课堂的座位进行了特殊的调整,不能出…...
Python 学习 2022.08.28 周日
文章目录 一、 概述1.1) 之前写的文章:1.2) 基础点1.3) 配置1.4) Python2 和 Python3 的区别1.5) 相关问题跟踪解决1.6) 其他 一、 概述 1.1) 之前写的文章: 【Python大系】Python快速教程《Python 数据库 GUI CGI编…...
WEB自动化测试,一定得掌握的8个核心知识点
编辑 写在前面 使用 cypress 进行端对端测试,和其他的一些框架有一个显著不同的地方,它使用 JavaScript 作为编程语言。 传统主流的 selenium 框架是支持多语言的,大多数 QA 会的 python 和 Java 语言都可以编写 selenium 代码࿰…...
期末复习总结!!【MySQL】库和表的基本操作 + 增删改查CURD
文章目录 前言一、数据库的基本操作1, 查看库2, 创建库3, 使用库4, 删除库 二、表的基本操作1, 创建表2, 查看表3, 查看表结构4, 删除表 三、增加(Create)四、查询(Retrieve) (重点)1, 全列查询2, 指定列查询3, 查询字段为表达式4, 指定别名5, 去重6, 排序7, 条件查询7.1, 基本…...
线上问题处理案例:出乎意料的数据库连接池 | 京东云技术团队
导读 本文是线上问题处理案例系列之一,旨在通过真实案例向读者介绍发现问题、定位问题、解决问题的方法。本文讲述了从垃圾回收耗时过长的表象,逐步定位到数据库连接池保活问题的全过程,并对其中用到的一些知识点进行了总结。 一、问题描述…...
Phi-4-mini-reasoning实战案例:在线考试系统实时解题反馈模块开发
Phi-4-mini-reasoning实战案例:在线考试系统实时解题反馈模块开发 1. 项目背景与需求 在线教育平台面临一个共同挑战:如何为考生提供即时、准确的解题反馈。传统方案依赖人工批改或简单规则引擎,难以应对复杂数学题和编程题的自动评分需求。…...
Linux设备驱动 -- RTC驱动移植DS1339
查看原理图RTC芯片采用的是DS1339芯片,这是达拉斯半导体公司的一款RTC芯片,使用I2C接口。 芯片接在RK3568的I2C5。 Linux内核支持DS1339 检索linux内核是否支持DS1339芯片驱动。 通过搜索可知到,Linux系统内核中已有达拉斯DS1339的驱动&#…...
【GUI-Agent】阶跃星辰 GUI-MCP 解读---()---执行层芭
起因是我想在搞一些操作windows进程的事情时,老是需要右键以管理员身份运行,感觉很麻烦。就研究了一下怎么提权,顺手瞄了一眼Windows下用户态权限分配,然后也是感谢《深入解析Windows操作系统》这本书给我偷令牌的灵感吧ÿ…...
ESP32无人机飞控C++工具库UAV_utils详解
1. UAV_utils 库概述UAV_utils 是一个面向无人机(Unmanned Aerial Vehicle)固件开发的轻量级 C 工具库,专为基于 ESP32 平台的飞控系统设计。其核心定位并非替代成熟飞控框架(如 PX4 或 ArduPilot),而是为嵌…...
说话人识别中的性别差异:为什么你的模型对女声准确率更低?
说话人识别中的性别差异:为什么你的模型对女声准确率更低? 在语音技术领域,说话人识别系统已经取得了显著进展,但一个长期存在的问题是:为什么这些系统对女性声音的识别准确率往往低于男性?这种现象不仅存在…...
3步彻底解决Windows系统卡顿问题:开源系统清理工具实战指南
3步彻底解决Windows系统卡顿问题:开源系统清理工具实战指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否也经历过这样的场景:工作…...
别再只调参了!用波士顿房价数据实战,教你读懂岭回归和Lasso的系数变化与特征选择
波士顿房价预测实战:从岭回归到Lasso的系数解密与特征工程艺术 当我们面对包含13个特征的波士顿房价数据集时,传统的线性回归往往会给出看似完美的系数解。但你是否注意到,这些系数在实际应用中可能极度不稳定?这正是正则化技术大…...
5个强力自动化功能:League-Toolkit如何提升英雄联盟游戏体验
5个强力自动化功能:League-Toolkit如何提升英雄联盟游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 作为一款全方位的英雄…...
解锁Android黑科技:动态加载Activity,让你的App秒变变形金刚
解锁Android黑科技:动态加载Activity,让你的App秒变变形金刚 一、开篇引入 在如今的移动应用开发领域,动态加载 Activity 技术在 Android 开发中占据着举足轻重的地位。想象一下,你使用的 360 安全卫士,在不重新安装…...
open-vm-tools 开发入门:如何为开源虚拟化工具贡献代码
open-vm-tools 开发入门:如何为开源虚拟化工具贡献代码 【免费下载链接】open-vm-tools Official repository of VMware open-vm-tools project 项目地址: https://gitcode.com/gh_mirrors/op/open-vm-tools open-vm-tools 是 VMware 官方开源的虚拟化工具集…...
