Camera USB3 Vision和/或GigE Vision摄像机是否会有类似于libdc1394的API?

Camera USB3 Vision和/或GigE Vision摄像机是否会有类似于libdc1394的API?,camera,computer-vision,standards,Camera,Computer Vision,Standards,由于firewire摄像机的带宽限制,它们已经过时,摄像机制造商似乎正在转向USB 3.0或千兆以太网接口。两者都有标准USB3 Vision和GigE Vision,许多制造商都遵守这些标准 然而,似乎每个制造商-巴斯勒、Pointgrey、Ximia和其他制造商-都有自己的SDK用于与相机接口。在开发应用程序时,开发人员需要学习每个API并与之交互,这是一件痛苦的事情,或者坚持使用一个制造商。我可能会被误解,但在这种情况下,如果开发人员需要使用依赖于制造商的API,那么行业标准的意义何在 对

由于firewire摄像机的带宽限制,它们已经过时,摄像机制造商似乎正在转向USB 3.0或千兆以太网接口。两者都有标准USB3 Vision和GigE Vision,许多制造商都遵守这些标准

然而,似乎每个制造商-巴斯勒、Pointgrey、Ximia和其他制造商-都有自己的SDK用于与相机接口。在开发应用程序时,开发人员需要学习每个API并与之交互,这是一件痛苦的事情,或者坚持使用一个制造商。我可能会被误解,但在这种情况下,如果开发人员需要使用依赖于制造商的API,那么行业标准的意义何在


对于firewire摄像头,开发人员可以访问libdc1394跨平台的高级API。他们不需要担心是谁生产的相机,也不需要编写单独的驱动程序。对于USB3 Vision和GigE Vision来说,这样的事情可能吗?如果是这样,谁来开发它?

我对libdc1394不是很熟悉,但我对所有其他接口都略知一二。 USB3 Vision、GigE Vision和所有其他标准可以使用一个公共接口连接:

GenICamTM的目标是提供一个通用编程接口 适用于各种摄像机和设备。无论什么界面 技术(GigE Vision、USB3 Vision、CoaXPress、Camera Link HS、, 摄像头链接、1394 DCAM等)他们正在使用或使用什么功能 实现时,应用程序编程接口(API)应 总是一样的

GenICamTM标准由多个模块组成,根据 要解决的主要任务是:

GenApi:配置相机

标准 要素命名约定(SFNC):要素的标准化名称和类型 常见的设备功能。包括像素格式命名约定 (PFNC)

GenTL:传输层接口,抓取图像

CLP协议:用于摄像机链接的GenICam

GenCP:通用控制协议

GenTL SFNC:传输层接口的推荐名称和类型

大多数最大的相机生产商都向GenTL供应商提供相机

不幸的是,我不知道GenICam的任何开源高级Api。我知道有两个支持GenICam的图像处理库:但它们不是免费的

另一个在业界不太流行的通用图像抓取界面是:。 例如,Ximea、Net Gmbh、Basler和几乎所有的网络摄像机都支持DirectShow


所以,在我看来,如果你想使用一个通用的接口来支持所有的相机,你应该考虑使用GeICAM接口。

至少对于GigVISIN来说,让我提一下这个项目是可供Linux使用的。它本来是GenTL/GenICam库,但由于下面概述的驱动约束问题,目前仅支持GigE

首先,我同意Martin的观点,即出于竞争和支持原因,创建通用SDK不符合相机制造商自身的利益。制造商开发专有usb驱动程序(用于USB3Vision)和NIC过滤器驱动程序(GigE可选,但强烈推荐)与SDK结合使用。它激励他们将用户锁定在自己的生态系统中,并将他们从竞争中分离出来

这就是我不同意AdamF的原因——我不认为GenTL得到相机制造商的广泛支持,特别是对于GigE或USB3Vision相机。支持GenTL将有效地允许用户使用任何通用SDK,同时仍然利用制造商的专有驱动程序

我认为OpenCV在这一点上更容易支持GenTL而不是GigE/U3V,因为跨可用硬件平台开发GigE/U3V驱动程序是一个巨大的障碍。GenTL支持在这一点上至少只是一个基于软件的界面。

请查看

它将核心USB3 Vision规范作为内核驱动程序实现。要控制摄像头,您仍然需要在摄像头周围封装一些用户模式逻辑,将其连接到GenApi(GenICam的参考实现)以及处理排队/退队到驱动程序的缓冲区


另外,关于您关于是否可以实现独立于供应商的驱动程序的问题,当然可以。这确实是标准的要点。由于各种原因,大多数相机供应商都为其相机提供自己的专有SDK,但也有一些独立SDK可以与任何符合标准的GigE Vision和USB3 Vision相机配合使用。其中是否有开源是一个好问题,我不知道有哪些是开源的。上述USB3 Vision驱动程序由National Instruments的IMAQdx驱动程序使用,该驱动程序是商业和封闭源代码。

一个旧线程,但万一有人来查看…

对于Aravis,在Linux和开源环境下加1。在我撰写此回复时,该项目目前正在支持USB3视觉摄像头,尽管有些摄像头比其他摄像头更好。目前,Github在回购方面有很多活动

在付费方面(至少在windows中),有一个名为ActiveUSB(用于USB3 CAM)和ActiveGigE的API。我没有使用GigE软件的经验,但使用过他们提供的USB3 vision库,只要他们遵守GeniCam标准,它在不同的摄像机中都非常好。它还提供了一个试用期,让你决定它是否适合你。它可以在Python、C、C#和VB语言中使用。如果您正在开发商业产品/解决方案,那么值得一看。另一方面,如果你不想或负担不起花任何钱,那么阿拉维斯是一个不错的选择

还值得注意的是,一些制造商开始提供用Python编写的演示,可用于创建自己的API。如前所述,这仅限于与ma一起使用