由于火线相机因带宽限制而变得过时,似乎相机制造商正在转向USB 3.0或千兆以太网接口。两者都有标准USB3 Vision和GigE Vision,许多制造商都在坚持这些标准。
然而,似乎每个制造商--Basler,Pointgrey,Ximia和其他人 - 都有自己的SDK来与他们的相机连接。在开发应用程序时,开发人员需要学习和连接每个API,这是一个痛苦,或坚持一个制造商。我可能会被误解,但在这种情况下,如果开发人员需要使用制造商相关的API,那么行业标准的重点是什么?
对于firewire相机,开发人员可以访问libdc1394跨平台,高级API。他们不需要担心谁制造相机而不必编写单独的驱动程序。对于USB3 Vision和GigE Vision来说,这样的事情是否可能?如果是这样,谁会发展它?
答案 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 Library和Halcon但它们不是免费的。
另一个不太受欢迎的行业常见图像抓取界面是: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。如前所述,这仅限于制造商的相机使用,除非您具有良好的代码编写能力,否则不容易互换。