Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取相机当前实时帧率(C++)

2023-12-30 23:28

本文主要是介绍Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取相机当前实时帧率(C++),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取相机当前实时帧率(C++)

  • Baumer工业相机
  • Baumer工业相机的帧率的技术背景
  • Baumer工业相机的帧率获取方式
    • CameraExplorer如何查看相机帧率信息
    • 在NEOAPI SDK里通过函数获取相机帧率(C++)
  • Baumer工业相机通过NEOAPI SDK获取帧率的优势
  • Baumer工业相机通过NEOAPISDK获取帧率的行业应用

Baumer工业相机

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

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

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

Baumer工业相机的Camera Explorer软件功能强大,内容丰富,通过该软件可以有效的获取相机相关的全部信息,在对于相机检测项目的开发中,有时需要获取相机中图像Buffer信息和相关的数据流信息,而Camera Explorer软件可以有效的显示相关的信息。

Baumer工业相机的帧率的技术背景

工业相机的帧率是指相机每秒捕获的单个帧或图像的数量。

帧率越高,意味着摄像机每秒能够捕获更多的图像,从而使视频更流畅、更细腻。

工业相机的帧率取决于各种技术因素,如图像传感器技术、相机的处理速度,以及用于传输数据的连接方法。

图像传感器技术: 摄像机的帧率是由图像传感器读出图像像素数据的速度决定的。与CCD传感器相比,CMOS传感器提供更快的帧率,因为它们可以无损地读出像素。

处理速度:工业相机的帧率会受到相机处理能力的影响。较高的处理速度能使数据读出和传输更快,从而获得更高的帧率。

连接方法: 工业相机的帧率还取决于用于传输数据的连接方法。USB 3.0和千兆以太网提供更快的数据传输率,通常用于工业相机以实现更高的帧率。

总之,工业相机帧率的技术背景由图像传感器技术、处理速度和用于传输数据的连接方法决定。

Baumer工业相机的帧率获取方式

Baumer工业相机帧率的计算方式如下所示:

  1. 确定相机的输出格式和分辨率,例如 1920*1080。

  2. 然后查找相机的技术规格表,了解它的最大帧速率。最大帧速率是指相机能够捕获的每秒图像帧数的最大值。例如,相机的最大帧速率为 60 帧每秒。

  3. 接下来,通过检查相机检测到考虑的接口,从相机中获取图像帧并计算每秒钟传输的帧数。

以通过USB3.0接口连接的标准分辨率相机为例,可以使用以下公式计算帧率:

实时帧数 = 最大帧速率 * 传输带宽利用率

传输带宽利用率 = (像素位深度 * 帧高 * 帧宽 * 实际传输速率) / 8

例如,如果选择了 8 位的像素位深度,相机输出的图像帧大小为 1920x1080 像素,并且实际传输速率为 300 MB/s,则传输带宽利用率为:

(8 * 1080 * 1920 * 300) / 8 = 150.7 MB/s

如果相机的最大帧速率为 60 帧每秒,则实时帧率为:

实时帧数 = 60 * 150.7 / 300 = 30 帧每秒

因此,这个相机在这种配置下的实时帧率为 30 帧每秒。

前面有技术博客可以使用C#语言获取通过NEOAPI SDK获取相机当前实时帧率:

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取相机当前实时帧率(C#)

CameraExplorer如何查看相机帧率信息

Baumer工业相机 的相机软件Camera Explorer可以可视化便捷地进行查看相机图像的相关信息

首先,双击进入相机界面
在这里插入图片描述
然后选择相机页面中左上角标题菜单栏中的Widgets,并选择其中的Image/Buffer Info。

在这里插入图片描述
然后在软件右侧出现相机图像通讯相关信息,如下所示:

在这里插入图片描述
图像参数中Throughout可以查看相机当前的帧率。如下图所示:

在这里插入图片描述

在NEOAPI SDK里通过函数获取相机帧率(C++)

在相机连接后构建线程显示帧率,C++调用代码如下所示:

#pragma region 线程显示帧率和网口数据通量(做参考)
AfxBeginThread(ShowFrame_hThread1, (void*)this);			
#pragma endregion UINT CGigeDemoDlg::ShowFrame_hThread1(LPVOID pParam)
{CGigeDemoDlg *dlg = (CGigeDemoDlg *)pParam;dlg->SetShowFrame();return 0;
}void CGigeDemoDlg::SetShowFrame()
{try{bool m_bRun0 = true;while (m_bRun0){if (camera.IsConnected()){int Cur_FrameID = Image.GetImageID();if (camera.GetRuntimeInfoList()["TLType"].GetString() == "GEV"){CString CurFameratestr;float m_CurFrameRateDouble = camera.GetRuntimeInfoList()["Throughput"].GetDouble();CurFameratestr.Format(_T("%.2f"), m_CurFrameRateDouble);GetDlgItem(IDC_STCURFRAME)->SetWindowText(CurFameratestr + _T(" fps"));float m_CurStreamBitrateDouble = camera.GetRuntimeInfoList()["Bitrate"].GetDouble();m_CurStreamBitrate.Format(_T("%.2f"), m_CurStreamBitrateDouble);GetDlgItem(IDC_STCURBITRATE)->SetWindowText(m_CurStreamBitrate + _T(" MBit/s"));}Sleep(66);}}}catch (int e){MessageBox(_T("Camera SetShowimage Error"));}
}

测试显示帧率结果如下所示:

在这里插入图片描述

Baumer工业相机通过NEOAPI SDK获取帧率的优势

Baumer工业相机通过NEOAPISDK获取帧率的优势主要包括:

高效性能:使用NEOAPISDK可以有效地控制和管理Baumer工业相机的帧率,对于需要高帧率的应用环境,比如高速检测或者实时监控非常有帮助。

兼容性强:NEOAPISDK提供了用户友好的接口,兼容各种编程语言,使得开发者可以便捷地集成这个SDK到他们的系统或应用中。

精确控制:通过NEOAPISDK,开发者可以精确地控制每一帧的获取和处理,这对于需要精确控制的应用环境,如精密制造或科学研究非常重要。

稳定可靠:Baumer工业相机配合NEOAPISDK可以长时间稳定运行,支持连续抓取和处理大量的图像数据,对于需要长时间运行的工业应用尤其重要

Baumer工业相机通过NEOAPISDK获取帧率的行业应用

Baumer工业相机通过NEOAPISDK获取帧率,其应用广泛涵盖了多个行业,这些包括但不限于:

制造业:在自动化生产线中,这种相机可以进行高帧率的视觉检测,检测产品质量问题或生产线的故障。

机器视觉:在自动化设备的构建中,比如机器人,这种相机可以进行高速的图像采集和处理,帮助机器进行准确的识别和操作。

交通监控:在交通监控中,如车牌识别,行人检测等,高帧率相机可以提供流畅且清晰的图像,保证识别的准确性。

医疗设备:在高级医疗设备中,如手术机器人,这种相机可以快速捕捉手术现场的详细图像,帮助医生进行精确的操作。

所以,无论是对于显微镜观察、流水线检查、外科手术辅助,还是交通监控,利用NEOAPISDK进行帧率控制的Baumer工业相机都能提供极高的性能表现

这篇关于Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取相机当前实时帧率(C++)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/554311

相关文章

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)