GenICam-GenApi简介

EMVA 1288标准之GemICam-GenApi学习与解读

背景介绍

当前相机不仅用于传输图像,还打包了越来越多的功能。这就导致相机的编程接口越来越复杂。

GenICam的目标是为所有类型的相机提供一个通用的编程接口,无论相机使用何种接口技术,或者实现了什么样的特性,它们的编程接口都应该相同。
请添加图片描述

根据要解决的主要任务不同,GenICam标准包含多个模块

  • GenApi:用于对相机进行配置的应用程序编程接口(API)。
  • GenTL:支持抓取图像的传输层(transport layer, TL)API。
  • SFNC:标准特性的命名约定。
  • CLProtocol:用于将Camera Link相机转接到GenAPI的API。
  • GenCP:通用控制协议。

各个模块可以独立于其他模块进行发布

GenApi模块简介

GenApi模块主要解决如何配置相机的问题。主要思想是,相机供应商提供camera description files,这些文件包含将相机特性自动化映射为相机寄存器的信息。

例如:用户想要设置相机增益Gain=42。使用GenICam的通用软件将自动读取相机的描述文件,然后搞清楚将Gain设置为42,意思是将0x2A这个值写入到地址为0x0815的寄存器上。其他可能涉及到的工作可能是提前检查相机是否具备增益属性以及检查新值是否在允许的增益范围。

为相机新增属性仅仅只需要扩展相机描述文件,就可使新特性在GenICam应用下立即可用。
请添加图片描述

上图展示配置相机时涉及到的层。应用想要设置相机属性,只需要编写类似下面这样的代码:

Camera.Gain = 42;

GenApi模块会将这个调用转换为一系列transport layer API的调用,这些API主要用于寄存器存取,类似下面这样的代码:

TransportLayer.WriteRegister( 0x0815, 0x2A, 2 ); // address, data, length

最后,transport layer将会把这些调用传递给相机接口。目前,GenApi假定相机属性和寄存器地址一一对应,不会多个属性共用同一个寄存器

GenICam标准定义了相机描述文件的语法以及transport layer API的语义。并且为各个相机属性定义了推荐的名字和类型。GenICam标准不包含实际解析描述文件的代码,也不包含transport layer代码。任何人都可以自定义其实现(GenICam有一个可以免费使用的参考实现)。

GenApi部分仅处理相机描述文件,意图帮助用户理解GenApi的关键设计思想,并帮助用户编写他们自己的相机描述文件。

相关推荐

  1. 精选GenAI和LLM学习资源

    2024-03-29 09:38:03       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-29 09:38:03       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-29 09:38:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-29 09:38:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-29 09:38:03       18 阅读

热门阅读

  1. 实现全文检索的方法

    2024-03-29 09:38:03       19 阅读
  2. bash计算时间差 时间间隔

    2024-03-29 09:38:03       20 阅读
  3. MySQL数据库存储过程介绍

    2024-03-29 09:38:03       18 阅读
  4. 【Gitlab】Ubuntu Linux完全卸载gitlab-ce

    2024-03-29 09:38:03       17 阅读
  5. MySQL内外连接

    2024-03-29 09:38:03       21 阅读
  6. sql造数据

    2024-03-29 09:38:03       17 阅读
  7. Odoo配置邮件服务器

    2024-03-29 09:38:03       19 阅读
  8. 网络安全产品之认识4A统一安全管理平台

    2024-03-29 09:38:03       17 阅读