2013-02-15 79 views
5

有没有可用于从Linux上用普通C来从GigE相机获取图像的库? 更具体地说,我安装了Basler GigE相机和pylon软件。在C++中也有示例代码。但我想和需要使用C(在我的工作中,这实际上是正确的事情做使用C)。如果仅仅为GigE提供libdc1394,那将非常有用。如何使用普通C在Linux上用GigE相机获取图像

回答

-6

如果我理解你是正确的,“GigE”就是“千兆以太网”,然后我假定摄像机运行IP。一个trivial Google search似乎支持这(看起来像以太网电缆给我)。

因此,你应该可以使用任何花园插座教程为C获取有关如何打开连接到相机的信息。

当然,您将需要可能特定于相机的协议信息,以了解要发送的内容以获取图像,以及如何解释返回的数据。这可能从您已有的C++代码中提取。

+0

示例代码并没有告诉我关于协议的任何。它只是从二进制文件导入类。虽然如果我有协议规范,它会帮我解决问题。 – Bitterblue 2013-02-15 09:21:58

+0

GigE的愿景确实使用UDP over IP,但它的指定很不明确,我不认为它有任何免费的实现。 – 2018-03-02 18:08:10

6

"GigE Vision"实际上是一个计算机视觉相机标准,大多数相机也实现了Genicam标准来调整参数。 至少这是理论 - 我有一个高速GigE相机,由于某种未知的原因(正式它只被Pleora的eBus支持)没有被Pylon或AVT找到。您可能能够获得这些标准的规格,但我不确定它们是否可以免费使用。

关于一个库,我只是在Ubuntu12.04下试过Aravis,它适用于我的相机(以190帧/秒的速度流512x512像素)。据我所知,它是用C编写的。作为提示,要编译包含的Viewer,必须安装所有gstreamer-dev软件包,包括libgstreamer-plugins-base0.10-dev。

2

GigE标准并不是非常开源友好 - 您必须向标准组织支付年度许可费,这就是为什么大多数使用GigE Vision的软件都需要大量资金。一群公司聚集在一起制定标准,他们不可能很快将其发​​布到世界各地。

因此,这里有一些选择(即我能想到的)...

1)逆向工程的协议自己。这非常复杂,所以这将是一个大项目。

2)也许你会很幸运,并找到一家公司,他们可以卖给你的SDK的C版本?

3)使用C++ :-)(JK ...)

4)支付标准组织给你访问或合作伙伴,一个公司,是就可以了。

5)使用试图反向设计标准的开源项目。 (我不知道合法性规则是什么)。例如:Aravis和OpenGigEVision。这些解决方案可能会在一段时间内不完整,但他们至少应该支持基础知识。

我觉得#5是你最好的选择,如果你没有很多时间或金钱花费。

4

大部分实施将使用C++和最佳暴露在一个C-API的建筑,因为GenICam标准是实现一个非常复杂的事情 - 和参考实现的作品,是免费的,所使用的几乎所有的SDK供应商。您可以实施收购的很多没有那么多在C,但它是非常难切GenICam标准圈外的 - 这是因为厂商使用GenICam标准的XML文档作为一种域特定的编程语言/环境 - 努力媲美从头开始实施网络浏览器。

Aravis确实存在,但依赖于gstreamer,看起来似乎主要用C语言编写,但它对于许多摄像头所需的复杂XML支持只会走得太远。我绝对不会在任务关键型设置中使用gstreamer,也不要在需要高性能或高效率的地方使用gstreamer。我相信市场上最好的选择是Pleora的SDK FYI - 没有关系。话虽如此 - 我已经写了这样一个库(使用C++ :-),我不能分享它来解决我提到的问题。

相关问题