是否会有类似libdc1394的USB3 Vision和/或GigE Vision相机的API?

时间:2015-04-15 14:51:41

标签: camera computer-vision standards

由于火线相机因带宽限制而变得过时,似乎相机制造商正在转向USB 3.0或千兆以太网接口。两者都有标准USB3 Vision和GigE Vision,许多制造商都在坚持这些标准。

然而,似乎每个制造商--Basler,Pointgrey,Ximia和其他人 - 都有自己的SDK来与他们的相机连接。在开发应用程序时,开发人员需要学习和连接每个API,这是一个痛苦,或坚持一个制造商。我可能会被误解,但在这种情况下,如果开发人员需要使用制造商相关的API,那么行业标准的重点是什么?

对于firewire相机,开发人员可以访问libdc1394跨平台,高级API。他们不需要担心谁制造相机而不必编写单独的驱动程序。对于USB3 Vision和GigE Vision来说,这样的事情是否可能?如果是这样,谁会发展它?

4 个答案:

答案 0 :(得分:4)

至少对于GigEVision,让我提一下可用于linux的Aravis项目。它应该是GenTL / GenICam库,但由于下面列出的驱动程序约束问题,现在只支持GigE。

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

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

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

答案 1 :(得分:2)

我对libdc1394不是很熟悉,但我知道其他大多数接口。 可以使用一个通用接口连接USB3 Vision,GigE Vision和所有其他标准:GenICam

  

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

     

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

     

GenApi:配置相机。

     

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

     

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

     

CLProtocol:用于Camera Link的GenICam。

     

GenCP:通用控制协议。

     

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

大多数最大的相机生产商都会为GenTL提供商提供相机使用。

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

另一个不太受欢迎的行业常见图像抓取界面是:DirectShow。 DirectShow例如由Ximea,Net-Gmbh,Basler和几乎所有网络摄像头支持。

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

答案 2 :(得分:1)

查看https://github.com/ni/usb3vision

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

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

答案 3 :(得分:0)

一个旧线程,但如果有人来找......

适用于Aravis的Plus 1(适用于开源和Linux)。在我撰写此回复时,该项目现在正在支持USB3 Vision相机,尽管有些比其他的要好。目前,Github上的回购交易中有很多活动

在事物的付费方面(至少在Windows中)有一个名为ActiveUSB(用于USB3摄像头)和A&B Software的ActiveGigE的API。我没有使用GigE软件的经验,但是使用了他们提供的USB3视觉库,只要它们遵循GeniCam标准,它在不同的相机上都非常不错。它还提供了一个试用期,使您可以决定是否适合自己。它可用于Python,C,C#和VB语言。如果您正在开发商业产品/解决方案,那么值得一看。另一方面,如果您不想或负担不起任何钱,那么Aravis是您的最佳选择。

还值得注意的是,一些制造商开始提供用Python编写的演示,可用于创建自己的API。如前所述,这仅限于制造商的相机使用,除非您具有良好的代码编写能力,否则不容易互换。