Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差(C++)

news2024/10/7 15:27:07

Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差(C++)

  • Baumer工业相机
  • Baumer工业相机BGAPI SDK和图像时间戳的技术背景
  • Baumer工业相机使用BGAPISDK控制相机数据流的方式
    • 1.引用合适的类文件
    • 2.使用BGAPISDK获取时间戳的方式
    • 2.使用BGAPISDK获取时间戳的演示
      • 获取时间戳的测试
  • Baumer工业相机使用BGAPISDK相机图像时间戳的优势
  • Baumer工业相机使用BGAPISDK相机图像时间戳的行业应用

Baumer工业相机

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

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

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

Baumer工业相机BGAPI SDK和图像时间戳的技术背景

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等。

Baumer工业相机图像时间戳是指在采集图像时,相机会为每个图像产生一个时间戳。它记录了图像采集的精确时间,以毫秒或微秒为单位,并用于相机控制系统中的各种应用。

本文介绍的使用BGAPI SDK获取工业相机采集图像对应的图像时间戳,从而可以快速计算相应的运行时间进行相应的使用。

Baumer工业相机使用BGAPISDK控制相机数据流的方式

下面介绍在C++里Baumer工业相机如何使用BGAPISDK获取时间戳计算相机运行时间以及时间差的方式

1.引用合适的类文件

代码如下(示例):


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

2.使用BGAPISDK获取时间戳的方式

核心代码如下所示:

//图像回调函数
//==================
void BGAPI2CALL BufferHandler( void * callBackOwner, Buffer * pBufferFilled )
{
	CGigeDemoDlg* pDlg = (CGigeDemoDlg*)callBackOwner;
	unsigned char* imagebuffer = NULL;
	USES_CONVERSION;
	try
	{
		if(pBufferFilled == NULL)
		{

		}
		else if(pBufferFilled->GetIsIncomplete() == true)
		{
			// queue buffer again
			pBufferFilled->QueueBuffer();
		}
		else
		{			
			pDlg->FrameID= pBufferFilled->GetFrameID();                                                 //获取当前图像FrameID显示帧率
			int frameid1 = pBufferFilled->GetFrameID();    
			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());//获取当前图像数据
			
			// 将相机时间戳转换为Unix时间戳 
			long timestamp = pBufferFilled->GetTimeStamp(); 
			UnixTimestamp Timestamp = convertCameraTimestampToUnixTimestamp(timestamp ); 			
			// queue buffer again
			pBufferFilled->QueueBuffer();
		}
	}
	catch (BGAPI2::Exceptions::IException& ex)
	{
		CString str;
		str.Format(_T("ExceptionType:%s! ErrorDescription:%s in function:%s"),ex.GetType(),ex.GetErrorDescription(),ex.GetFunctionName());		
	}	
}

// 定义相机时间戳类型 
typedef long long CameraTimestamp;
 // 定义Unix时间戳类型 
 typedef long long UnixTimestamp; 
 // 获取当前Unix时间戳 
 UnixTimestamp getUnixTimestamp() 
 { 
 	return chrono::duration_cast<chrono::milliseconds>( chrono::system_clock::now().time_since_epoch() ).count(); 
 } 
// 将相机时间戳转换为Unix时间戳 
UnixTimestamp convertCameraTimestampToUnixTimestamp(CameraTimestamp cameraTimestamp) 
{
 // 计算Unix时间戳与相机时间戳的差值 
	UnixTimestamp unixTimestamp = getUnixTimestamp(); 
	CameraTimestamp cameraTimeDiff = unixTimestamp * 1000 - cameraTimestamp; 
	// 计算转换后的Unix时间戳 
	UnixTimestamp convertedUnixTimestamp = unixTimestamp - cameraTimeDiff / 1000; 
	return convertedUnixTimestamp; 
}

2.使用BGAPISDK获取时间戳的演示

获取时间戳的测试

如下图所示:
在这里插入图片描述

从上面的测试验证,可以看出相机的图像时间戳为相机启动后的时间计数,最小单位为纳秒,时间精度非常高,可以用在一些高速高精度的领域。

Baumer工业相机使用BGAPISDK相机图像时间戳的优势

工业相机图像时间戳的优势包括:

精准性:相机图像时间戳可以提供非常精确的时间测量,以微秒或毫秒为单位。这使得相机图像时间戳非常适合需要高精度的应用,例如时间同步或数据匹配。

可靠性:相机图像时间戳不受环境(例如温度、湿度)或外部干扰的影响。此外,相机图像时间戳是由硬件采集的,因此它比由软件生成的时间戳更可靠。

可用性:相机图像时间戳可用于不同的应用,例如时间同步、数据处理和数据匹配。它可以帮助用户在不同领域中实现各种应用。

方便性:工业相机通常将时间戳直接嵌入图像中,因此无需用户额外安装或配置时间戳设备。这使得工业相机的图像时间戳非常方便和易于使用。

多功能性:相机图像时间戳可以用于还原采集过程中丢失的数据,或者用于将相机图像和其他传感器数据进行匹配。它可以帮助用户更好地理解和处理数据。

综上所述,工业相机图像时间戳具有很多优点。它可以提供高精度、可靠性和方便性,并且可以用于不同的应用,有助于用户更好地理解和处理数据。

Baumer工业相机使用BGAPISDK相机图像时间戳的行业应用

通常,相机图像时间戳可以用于以下应用:

时间同步:在某些应用中,需要对多个相机进行同步,以确保其采集的图像时间戳是一致的。在这种情况下,相机图像时间戳可以用于同步多个相机之间的时间。

数据处理:在大多数情况下,工业相机图像采集是以连续帧的形式进行的。如果时间戳被记录并存储,那么就可以使用时间戳来检查帧是否被正确地采集,或者是否有帧率估计错误。

数据匹配:在某些应用程序中,需要将相机采集的图像与其他传感器数据进行匹配。例如,在机器人导航中,相机图像的时间戳可以与GPS或惯性导航系统的数据进行匹配,以便更准确地定位机器人。

总之,相机图像时间戳是工业相机控制系统中的重要组成部分。它可以帮助用户在不同领域中实现各种应用,例如时间同步、数据处理和数据的匹配。

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

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

相关文章

动态规划I (45、55、62、63)

按顺序刷确实效率太低了&#xff0c;今天开始要按顺序的同时也按标题来了&#xff0c;全面加油&#xff01;这种应该以后会更多直接总结题解了&#xff0c;自我学习用&#xff0c;全靠大佬&#xff0c;贴贴&#xff01;&#xff01;含45、55、62、63 CP55 跳跃游戏 题目描述&…

【浅谈DBA职业生涯---误操作篇】

&#x1f448;【上一篇】 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 【下一篇】&#x1f449; &#x1f53b;【&#x1f4a3; 话题引入&#xff1a;请列举你在从事 DBA 生涯中,最难以忘怀的一次误操作】 &#x1f6a9; 该话题覆盖…

MapReduce共享单车练习

MapReduce 本机运行 文章目录 MapReduce 本机运行✅前置工作1. 配置JDK2. 创建Java项目3. 导入所需JAR包 编程实现以下题目1. 统计各个月份共享单车使用的总数2. 统计不同天气情况下共享单车使用的总数3. 统计每个季度共享单车使用的总数4. 统计每个月份的注册数量5. 统计每天1…

【Docker】docker部署前Springboot-vue后端分离项目实战

文章目录 docker 安装jdkdocker 安装mysql通过Docker命令进入Mysql容器内部初始化数据sqlDbx连接查看构建后端镜像查看构建的后端镜像运行后端镜像 docker 安装nginx docker 安装jdk https://jackwei.blog.csdn.net/article/details/110227719 docker search openjdk:8 docke…

python语法-数据可视化(全球GDP动态柱状图开发)

python数据可视化&#xff08;全球GDP动态柱状图开发&#xff09; 开发工具&#xff1a;pycharm、pyecharts模块 &#xff08;项目数据见文末参考内容&#xff09; """ 演示GDP动态柱状图开发 """from pyecharts.charts import Bar,Timeline fr…

Linux系统运行时参数命令(性能监控、测试)(1)监控工具、CPU上下文切换、CPU性能监控

目录 1. 监控工具2. CPU性能监控2.1 平均负载和CPU使用率2.1.1 平均负载基础2.1.2 使用uptime命令分析平均负载2.1.3 平均负荷和CPU使用率 2.2 CPU上下文切换2.2.1 什么是CPU上下文切换2.2.2 有哪些上下文切换2.2.3 怎么查看上下文切换 vmstat2.3 遇到CPU使用率高该如何排查 主…

openGauss5.0之学习环境 Docker安装

文章目录 0.前言1. 准备软硬件安装环境1.1 软硬件环境要求1.2 修改操作系统配置1.2.1 关闭操作系统防火墙 1.3 设置字符集参数1.4 设置时区和时间&#xff08;可选&#xff09;关闭swap交换内存1.5 关闭RemoveIPC1.6 关闭HISTORY记录 2. 容器安装2. 1支持的架构和操作系统版本2…

大语言模型之人类反馈学习RLHF

在2017年左右&#xff0c;深度强化学习&#xff08;Deep Reinforcement Learning&#xff09;逐渐兴起并引起广泛关注。特别是在2017年6月&#xff0c;OpenAI与Google DeepMind联合推出了一项名为《Deep Reinforcement Learning from Human Preferences》&#xff08;RLHF&…

chatgpt赋能python:Python如何判断整数

Python如何判断整数 Python是一个简单易学的编程语言&#xff0c;但是对于初学者来说&#xff0c;判断整数可能会有一些困难。在本文中&#xff0c;将介绍Python如何判断整数&#xff0c;并提供一些示例帮助您更好地理解。 如何判断整数 在Python中&#xff0c;判断整数可以…

Skywalking环境搭建

Skywalking环境搭建 elasticsearch环境搭建Skywalking环境搭建 elasticsearch环境搭建 接下来我们在虚拟机CentOS中搭建Skywalking的可观测性分析平台OAP环境。Skywalking默认使用H2内存进行数据的存储&#xff0c;我们可以替换存储源为ElasticSearch保证其查询的高效及可用性…

运行后端SpringBoot项目

目录 一、注册微信开发者账号 1. 注册开发者账号 2. 获取appid和密钥 二、开通腾讯云TRTC服务 1. TRTC业务介绍 2. 为什么不使用阿里云的实时音视频服务&#xff0c;偏要选用腾讯云TRTC服务&#xff1f; 3. 开通TRTC服务 4. 领取TRTC的AppID和密钥 三、导入 emos-api …

Geant4安装记录,15.5.0VMware + 11.0.0G4 + 18..04.1 ubuntu

仅仅是记录学习使用&#xff0c;有问题请联系 Geant4安装前准备 &#xff08;1&#xff09;安装虚拟机&#xff0c; VMware 15.5 &#xff08;2&#xff09;在虚拟机上安装ubuntu 以上两个步骤在网上有很多教程&#xff0c;安装很简单&#xff0c;大家自行安装即可 这里记录…

【前端验证】通关寄存器与ral_model —— 25种常用寄存器类型全览

寄存器的属性分类 本文档对于寄存器的属性以synopsys相关文档以及ral_model生成模型时的识别方式为基准。通常讲可以归纳为以下三个方面&#xff1a;读写属性read-write access、写后值modified write value、读后操作read action。注意&#xff0c;这里指的都是软件的操作&am…

chatgpt赋能python:Python怎么升序排序

Python怎么升序排序 排序是我们经常会用到的一种操作&#xff0c;而在Python中&#xff0c;对于列表或数组等序列类型的数据&#xff0c;我们可以使用内置的sorted()函数来进行排序操作。而在排序时&#xff0c;升序排序是我们最常用的一种。 Python中的sorted()函数 sorted…

关于uni-app与vue路由配置的不同,不使用uni.navigateTo接口跳转时,使用this.$router.push的踩坑经验

目录 懵逼的一个小时 uni-app与vue路由配置的不同 非官方接口的另类写法 错误编写&#xff1a; 正确编写&#xff08;只需写父组件即可&#xff0c;其他是多余&#xff09;&#xff1a; 懵逼的一个小时 之前用vue写router路由的时候&#xff0c;先配置一个路由表&am…

chatgpt赋能python:Python怎么删除列表中的最大值和最小值

Python怎么删除列表中的最大值和最小值 在Python中&#xff0c;一个列表&#xff08;List&#xff09;是一种非常常见的数据结构&#xff0c;它允许我们以有序的方式存储和访问数据。但是&#xff0c;有时候我们需要从列表中删除最大或最小的值&#xff0c;以满足我们的特定需…

哈希表原理,以及unordered_set/和unordered_map的封装和迭代器的实现

哈希表 unordered系列unordered_set和unordered_map的使用哈希哈希概念哈希冲突哈希函数闭散列开散列哈希表的扩容哈希表源码&#xff08;开散列和闭散列&#xff09; 封装unordered_set/和unordered_map&#xff0c;以及实现迭代器节点定义unordered_set定义unordered_map定义…

Python3 flask-socketio 整合vue

1. 前端说明 前端追加了vue-socket.io的依赖 更新package.json及package-lock.json后&#xff0c;需要补充库 2. 后端说明 服务端需要安装的python包 suse python 3.6.12 Flask_SocketIO-4.3.1-py2.py3-none-any.whl python_socketio-4.6.0-py2.py3-none-any.whl python_…

在PPT里如何做出晶莹剔透的高级水泡感出来呢

开篇 很多PPT特别是一些TED演讲类PPT,它的首页开篇给人以强烈的冲击感。比如说上面这张PPT,笔者就卖出过一页800元的效果。它的高级高级在以下两个地方: 水晶感;透明感这是时下非常流行的一种TED场景式演讲专用的PPT,适用于一些大厂的CTO、CEO都大量使用这种效果。 今天…

shell脚本编写辅助命令

目录 一、echo 命令 二、字符串相关操作 1.截取字符串 2.获取字符串长度 3.字符串追加字符 4.从开头或结尾删除字符串指定格式内容 三、随机数 1.使用 $RANDOM 2.指定RANDOM变量的范围 &#xff08;1&#xff09;从0开始的范围 &#xff08;2&#xff09;从指定数始…