当前位置: 首页 > news >正文

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

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

  • Baumer工业相机
  • Baumer工业相机的帧率的技术背景
  • Baumer工业相机的帧率获取方式
    • CameraExplorer如何查看相机帧率信息
    • 在NEOAPI SDK里通过函数获取相机帧率
  • 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 帧每秒。

前面有技术博客可以使用FrameID每秒计算对应的差值,从而计算相机的实时帧率:

Baumer工业相机堡盟工业相机如何通过BGAPISDK里的工具函数来计算工业相机的实时帧率(C#)

CameraExplorer如何查看相机帧率信息

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

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

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

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

在这里插入图片描述

在NEOAPI SDK里通过函数获取相机帧率

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

ShowFrame_hThread1 = new Thread((ThreadStart)delegate() { SetShowFrame(curDevice); });
ShowFrame_hThread1.IsBackground = true;
ShowFrame_hThread1.Start();Thread ShowFrame_hThread1;
int CameraFrameID = 0;
private void SetShowFrame(NeoAPI.Cam CamInstance)
{try{                bool m_bRun0 = true;while (m_bRun0){//通过回调函数里的FrameID计算相机帧率并显示if (CameraFrameID > 0){int CurFrameID1 = CameraFrameID;Thread.Sleep(1000);int CurFrameID2 = CameraFrameID;int CalFrameID = (CurFrameID2 - CurFrameID1) * 1;//this.CalFrameDisplay.Text = CalFrameID.ToString();// 查询对应功能ThroughputNeoAPI.Feature ThroughputFeature;camera.GetRuntimeInfoList().TryGetValue("Throughput", out ThroughputFeature);// 获取数据通量Throughput信息double ThroughputFdata = ThroughputFeature.ValueDouble;// 显示当前相机对应帧率this.CalFrameDisplay.Text = ThroughputFdata.ToString();}                    }}catch (Exception ex1){OnNotifyShowRecieveMsg(ex1.Message);}
}

测试显示帧率结果如下所示:
在这里插入图片描述

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章:

  • Vue.js和Node.js的关系--类比Java系列
  • Mybatis行为配置之Ⅰ—缓存
  • 【北亚数据恢复】mysql表被truncate,表数据被delete的数据恢复案例
  • Python 爬虫 教程
  • 阿里后端实习一面面经
  • 【javaweb】tomcat9.0中的HttpServlet
  • 排序算法-选择插入排序
  • WSL使用VsCode运行cpp文件
  • 【VUE】Flask+vue-element-admin前后端分离项目发布到linux服务器操作指南
  • PyTorch常用工具(2)预训练模型
  • 2022年山东省职业院校技能大赛高职组云计算赛项试卷第三场-公有云
  • 雪花算法(Snowflake)介绍和Java实现
  • 微信小程序有几个文件
  • LVS那点事
  • 易舟云财务软件使用教程【文章目录】
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • CSS 提示工具(Tooltip)
  • es6(二):字符串的扩展
  • golang中接口赋值与方法集
  • Gradle 5.0 正式版发布
  • iOS 颜色设置看我就够了
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • mac修复ab及siege安装
  • Promise面试题2实现异步串行执行
  • Redis 懒删除(lazy free)简史
  • SpiderData 2019年2月13日 DApp数据排行榜
  • SpiderData 2019年2月16日 DApp数据排行榜
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • VuePress 静态网站生成
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 成为一名优秀的Developer的书单
  • 服务器从安装到部署全过程(二)
  • 复杂数据处理
  • 工作中总结前端开发流程--vue项目
  • 深度解析利用ES6进行Promise封装总结
  • 微服务入门【系列视频课程】
  • 白色的风信子
  • 【干货分享】dos命令大全
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # Maven错误Error executing Maven
  • %check_box% in rails :coditions={:has_many , :through}
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (poj1.2.1)1970(筛选法模拟)
  • (八)Spring源码解析:Spring MVC
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (四) 虚拟摄像头vivi体验
  • (转)3D模板阴影原理
  • (转)linux 命令大全
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .Net 8.0 新的变化