如何在Linux上使用普通C语言获取GigE相机图像

8

我是否可以在Linux上使用纯C从GigE相机获取图像的库?更具体地说,我有一台Basler GigE相机和安装了pylon软件。也有C++的示例代码。但是我想要并需要使用C(在我的工作中,这实际上是使用C的正确方法)。如果有类似libdc1394这样有用的东西只适用于GigE就太好了。

3个回答

7

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

关于库,我刚试过 Aravis 在 Ubuntu12.04 下工作正常(以 190 帧/秒流式传输 512x512 像素)。据我所知,它是用 C 写的。提示一下,要编译包含在内的 Viewer,您必须安装所有 gstreamer-dev 包,包括 libgstreamer-plugins-base0.10-dev。


4
大多数实现将使用C++,并且最好在此基础上公开c-api,因为GenICam是一个非常复杂的实现 - 参考实现可行,免费,并且几乎所有SDK供应商都在使用。您可以在C中实现很多采集内容,但是很难将GenICam从循环中削减出来 - 这是因为供应商已将GenICam XML文档用作一种特定于域的编程语言/环境 - 所需的工作量相当于从头开始实现Web浏览器。 Aravis确实存在,但取决于gstreamer,并且似乎主要使用C,但它只能在许多相机所需的复杂XML支持方面走得这么远。我永远不会在关键任务设置或需要可靠操作以及需要高性能或高效率的情况下使用gstreamer。我认为市场上最好的选择是Pleora的SDK FYI - 没有关系。话虽如此 - 我写了这样一个库(带有C++ :-)),我无法分享以解决我提到的问题。

2
GigE标准并不友好于开源 - 您必须向标准组织支付年度许可证费用,这就是为什么大多数使用GigE Vision的软件都需要付出相当大的代价。一群公司联合制定了该标准,他们不太可能很快将其发布到全球。

因此,以下是您的一些选择(我能想到的)...

1)自己反向工程协议。这非常复杂,因此这将是一个大项目。

2)也许你会有运气,找到一家可以出售C版本SDK的公司?

3)使用C++ :-) (开个玩笑...)

4)向标准组织支付费用以获得访问权限,或与正在使用它的公司合作。

5)使用试图反向工程标准的开源项目。 (我不知道法律规定是什么)。例如:Aravis和OpenGigEVision。这些解决方案可能会有一段时间不完整,但至少应该支持基本功能。

如果您没有太多时间或金钱要花费,我认为#5是您最好的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接