有没有可用于从Linux上用普通C来从GigE相机获取图像的库? 更具体地说,我安装了Basler GigE相机和pylon软件。在C++中也有示例代码。但我想和需要使用C(在我的工作中,这实际上是的正确的事情做使用C)。如果仅仅为GigE提供libdc1394,那将非常有用。如何使用普通C在Linux上用GigE相机获取图像
回答
如果我理解你是正确的,“GigE”就是“千兆以太网”,然后我假定摄像机运行IP。一个trivial Google search似乎支持这(看起来像以太网电缆给我)。
因此,你应该可以使用任何花园插座教程为C获取有关如何打开连接到相机的信息。
当然,您将需要可能特定于相机的协议信息,以了解要发送的内容以获取图像,以及如何解释返回的数据。这可能从您已有的C++代码中提取。
"GigE Vision"实际上是一个计算机视觉相机标准,大多数相机也实现了Genicam标准来调整参数。 至少这是理论 - 我有一个高速GigE相机,由于某种未知的原因(正式它只被Pleora的eBus支持)没有被Pylon或AVT找到。您可能能够获得这些标准的规格,但我不确定它们是否可以免费使用。
关于一个库,我只是在Ubuntu12.04下试过Aravis,它适用于我的相机(以190帧/秒的速度流512x512像素)。据我所知,它是用C编写的。作为提示,要编译包含的Viewer,必须安装所有gstreamer-dev软件包,包括libgstreamer-plugins-base0.10-dev。
GigE标准并不是非常开源友好 - 您必须向标准组织支付年度许可费,这就是为什么大多数使用GigE Vision的软件都需要大量资金。一群公司聚集在一起制定标准,他们不可能很快将其发布到世界各地。
因此,这里有一些选择(即我能想到的)...
1)逆向工程的协议自己。这非常复杂,所以这将是一个大项目。
2)也许你会很幸运,并找到一家公司,他们可以卖给你的SDK的C版本?
3)使用C++ :-)(JK ...)
4)支付标准组织给你访问或合作伙伴,一个公司,是就可以了。
5)使用试图反向设计标准的开源项目。 (我不知道合法性规则是什么)。例如:Aravis和OpenGigEVision。这些解决方案可能会在一段时间内不完整,但他们至少应该支持基础知识。
我觉得#5是你最好的选择,如果你没有很多时间或金钱花费。
大部分实施将使用C++和最佳暴露在一个C-API的建筑,因为GenICam标准是实现一个非常复杂的事情 - 和参考实现的作品,是免费的,所使用的几乎所有的SDK供应商。您可以实施收购的很多没有那么多在C,但它是非常难切GenICam标准圈外的 - 这是因为厂商使用GenICam标准的XML文档作为一种域特定的编程语言/环境 - 努力媲美从头开始实施网络浏览器。
Aravis确实存在,但依赖于gstreamer,看起来似乎主要用C语言编写,但它对于许多摄像头所需的复杂XML支持只会走得太远。我绝对不会在任务关键型设置中使用gstreamer,也不要在需要高性能或高效率的地方使用gstreamer。我相信市场上最好的选择是Pleora的SDK FYI - 没有关系。话虽如此 - 我已经写了这样一个库(使用C++ :-),我不能分享它来解决我提到的问题。
- 1. 如何在Raspberry Pi中使用Basler GigE相机pylon5 C++库
- 2. OpenCV + GigE Vision相机+ C++
- 3. 在Linux操作系统上使用Java通过佳能相机捕获图像
- 4. 使用GigE Vision相机的OpenCV
- 5. 如何在Android中使用相机意图获取图像名称?
- 6. 使用MVP从图库/相机中获取图像
- 7. 如何获取相机预览上的图像覆盖
- 8. 如何使用C++从图像采集卡获取图像?
- 9. 如何使用C#将普通jpeg图像字节转换为DICOM本机图像字节
- 10. 在android中,获取从相机捕获图像的图像ID
- 11. 成像源Gige相机在Aravis中处理大量内存
- 12. 如何使用相机捕获图像并发送到firebase
- 13. 我无法使用Camera2获取Android相机图像
- 14. 从iPhone获取图像,使用phonegap相机api
- 15. 如何使用opencv单击图像时获取相机的曝光时间?
- 16. 如何在C++中使用GDI +获取图像文件类型?
- 17. 如何从相机意图获取图像路径?
- 18. 使用相机的图像选择器没有使用相机图像
- 19. 如何阅读使用普通的JavaScript图像文件?
- 20. 从相机获取低质量图像
- 21. 从相机获取图像到ImageView Android
- 22. 通过使用url获取图像
- 23. 使用Phonegap在iOS上的相机预览上叠加图像
- 24. 如何使用three.js在mouseover上获取图像坐标?
- 25. 如何使用IHTMLSelectionObject获取图像?
- 26. 如何使用FreeImage获取子图像
- 27. 如何使用simplexml获取图像src
- 28. 我如何使用preg_match_all获取图像
- 29. 如何获取图像,并使用PHP
- 30. 如何使用jQuery获取图像ID?
示例代码并没有告诉我关于协议的任何。它只是从二进制文件导入类。虽然如果我有协议规范,它会帮我解决问题。 – Bitterblue 2013-02-15 09:21:58
GigE的愿景确实使用UDP over IP,但它的指定很不明确,我不认为它有任何免费的实现。 – 2018-03-02 18:08:10