支持GIGE及USB3 Vision工业相机的开源库:Aravis

本文详细介绍了如何在Linux和Windows系统下安装Aravis库,涉及meson的安装、必要的库配置、Windows下的conan管理和Gstreamer集成,以及在Windows下遇到的问题和解决方案,包括Qt集成中的命名冲突处理。
摘要由CSDN通过智能技术生成

1.前言

今天在查找资料时,在github上发现了一个开源库:【Aravis: A vision library for genicam based cameras 】
好像是支持所有的gige以及usb3的工业相机?测试一下先。

2.在linux下安装

2.1.安装meson

Aravis是使用meson来进行管理编译的,因此需要先安装meson;安装的方式可以从下面二选一

2.1.1.利用pip进行安装

注意要用下面的语句来安装meson,而不要用"apt install meson",因为用"apt install meson"安装的版本比较旧。

pip3 install meson

2.1.2.直接下载meson源码

假如用“pip3 install meson”还是安装不了的话,其实可以直接到官网下载
【meson release】
下载,解压后就可以直接用了。
比如我这里解压在/root/Desktop/aravis/meson-1.4.0/里面,然后我在/root/Desktop/aravis/aravis-0.8.31/里面使用的话,只需要

../meson-1.4.0/meson.py setup build

在这里插入图片描述

2.2.安装必要的库

sudo apt install libxml2-dev libglib2.0-dev cmake libusb-1.0-0-dev gobject-introspection \
                 libgtk-3-dev gtk-doc-tools  xsltproc libgstreamer1.0-dev \
                 libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
                 libgirepository1.0-dev gettext

还有解码库,各种都给它弄满

# 这两个和下面的有什么区别
sudo apt install gstreamer1.0-plugins-bad 
sudo apt install gstreamer1.0-plugins-ugly

sudo apt install libgstreamer-plugins-base1.0-dev
sudo apt install libgstreamer-plugins-good1.0-dev
sudo apt install libgstreamer-plugins-bad1.0-dev

2.3.编译Aravis源码

官方提供的安装文档在这里【Aravis-0.8 Installation and Debug】,主要是这几个指令

meson setup build # 假如你使用的是源码安装的meson,那么就需要把meson.py的位置明确地写完,才能调用,比如我上面的../meson-1.4.0/meson.py
cd build
ninja
ninja install

3.在Windows下安装

其实主要参考官方提供的【aravis-msvc.yml】文档来进行。里面都是一些指令,按步骤执行即可。

结合官方的文档,以及参考论坛这里的讨论:【MSVC Conan Install】,我们可以知道在Windows下编译Aravis的步骤为:
(根据他们的讨论,貌似可以顺利编译出函数库,但是编译不了Viewer。不过也没关系,有库就够了,可视化的东西可以自己用Qt实现。)

3.1.安装conan

直接pip安装conan。这里必须要指定版本,不然会自动给你安装最新版(2.x),而1.x和2.x版本的使用方式差异巨大。

pip install "conan<2.0.0"

3.2.配置conanfile.txt

新建一个文件夹,然后在这个文件夹下新建一个conanfile.txt文件。比如我是新建了这个【C:\Users\Administrator\Desktop\Aravis】文件夹。
在这里插入图片描述conanfile.txt里面的内容为:

[requires]
libiconv/1.17
#gobject-introspection/1.69.0
gstreamer/1.22.3
#gst-plugins-base/1.22.3      Disable gstreamer for now, latest gst-plugins-base is 1.19.2
#gtk/4.4.0
libxml2/2.10.3
zlib/1.2.13
libusb/1.0.26

[build_requires]
meson/0.59.2
pkgconf/1.9.3

[generators]
pkg_config
virtualenv
virtualbuildenv
virtualrunenv

[options]
glib:shared=True
gstreamer:shared=True
gst-plugins-base:shared=True

3.3.下载源码并解压

【Aravis: A vision library for genicam based cameras 】下载源码,并解压到和conanfile.txt同一个目录下

在这里插入图片描述

3.4.执行conan install

打开cmd,然后cd到conanfile.txt所在目录
在这里插入图片描述然后执行下面的语句:
(我用的vs2019,因此版本是16;版本号与vs的年份的对应关系可以看这个【最全Visual Studio版本号对应表VisualStudioVersion】;注意把下面的最后那个点也要拷贝上。)

conan install -s os="Windows" -s compiler="Visual Studio" -s compiler.version="16" -s arch="x86_64" -s build_type="Release" -b pcre -b missing -b cascade -if build .

正常来说,应该不会报什么错。
在这里插入图片描述

3.5.执行meson相关操作

还是在当前目录下,依次执行下面这三个语句。作用应该是设置好临时环境

 build\activate.bat
 build\activate_build.bat
 build\activate_run.bat

在这里插入图片描述接着cd到aravis的源码目录
在这里插入图片描述

接着执行下面的语句:

meson --prefix C:\Users\Administrator\Desktop\Aravis\install --buildtype release --pkg-config-path C:\Users\Administrator\Desktop\Aravis\build -Ddocumentation=disabled -Dgst-plugin=disabled -Dintrospection=disabled -Dusb=enabled -Dviewer=disabled -Dgv-n-buffers=1 -Dgentl-producer=true . .\build

上面这个语句里面的两个路径(–prefix、–pkg-config-path)一定要设置好。第一个是指编译出来的东西(.exe,.lib,.dll,.h)将会安装到哪里;第二个路径是我们在3.4小节执行conan install时生成的文件夹,里面都是一些依赖库、环境相关的东西,很重要,一定要指定正确。假如没有指定正确的话,大概率会报下面的错:

Run-time dependency glib-2.0 found: NO (tried pkgconfig and cmake)
meson.build:59:0: ERROR: Dependency "glib-2.0" not found, tried pkgconfig and cmake

正常的话,你会看到以下画面:
在这里插入图片描述然后执行编译:

meson compile -C .\build -v

执行安装:

meson install -C .\build

然后,你就可以在前面指定的install目录下看到编译出来的东西了。
在这里插入图片描述最后,你就可以为所欲为了。

4.在Windows下使用。

假如直接使用,貌似对于Gige相机没问题,但是对于usb相机,可能会有这个问题:

[11:42:28.503] 馃唵 interface> Failed to open USB device: LIBUSB_ERROR_NOT_SUPPORTED
[11:42:28.505] 馃吀 interface> Found 0 USB3Vision device (among 7 USB devices)

在这里插入图片描述
找了一下官方的讨论,发现别人也遇到这个问题【 USB3Vision device in Mingw64 Win10 #431 】
他们好像是说相机自动安装的驱动其实是不支持libusb的,因此需要换一下相机的驱动。办法是用【Zadig】,把对应设备的驱动更新替换一下。注意,要选择你相机的Composite Parent.
要选择这个Composite Parent,必须要先允许List All Devices,然后取消Ignore Hubs or Composite Parents。
在这里插入图片描述

将其驱动更新为libusb-win32或者libusbK (不要选WinUSB,否则相机厂家的自己的SDK、软件就识别不到他们自己的相机了)(这里究竟选哪个比较复杂,请看本文的第5小节) 。
在这里插入图片描述
然后aravis就可以识别到了:
在这里插入图片描述假如想恢复原来的驱动,只需要在设备管理器中右键你的设备–》更新驱动程序–》浏览我的电脑以查找驱动程序®–》让我从计算机上的可用驱动列表中选取(L)–》选择下面图片显示的“USB Composite Device”–》下一步。
在这里插入图片描述
然后就会用回原来的驱动了
在这里插入图片描述

5.在Windows下使用存在的一些问题

当按照第4小节介绍的那样,使用Zadig对相机安装了各个驱动时,还是会存在一些问题。

5.1.同时打开同一个相机

当我们用两个程序,先后打开同一个相机时,不同的驱动有不同的反应:

  • 使用【libusbK (v3.1.0.0)】时,两个程序都可以检测到相机,但是当第二个程序试图采集图像时,系统会蓝屏崩溃。原生软件也可检测到相机。
  • 使用【libusb-win32 (v1.2.7.3)】时,两个程序都可以检测到相机,当第二个程序执行图像采集函数时,第一个、第二个程序的图像采集都会出问题。但是系统不会蓝屏崩溃。原生软件也可检测到相机。
  • 使用【WinUSB (v6.1.7600.16385)】时,第一个程序会检测到相机并成功采集图像,第二个程序无法检测到相机。原生软件检测不到相机。
  • 使用【USB Serial (CDC)】时,aravis、原生软件都无法检测到相机。

6.测试

执行完上面的指令,假如运行arv-viewer-0.8时出现下面的问题:

root@loongson-pc:~/Desktop/aravis/aravis-0.8.31/build# arv-viewer-0.8
arv-viewer-0.8: error while loading shared libraries: libaravis-0.8.so.0: cannot open shared object file: No such file or directory

那么还需要先执行这一句

sudo ldconfig

在这里插入图片描述

编译好之后,期待的arv-viewer-0.8.出现了。
在这里插入图片描述

7.在Qt中使用

把Aravis的头文件、库文件的路径加进来:

INCLUDEPATH += /usr/local/include/aravis-0.8
LIBS += -laravis-0.8

INCLUDEPATH += /usr/include/glib-2.0 \
/usr/lib/x86_64-linux-gnu/glib-2.0/include

在使用时,由于Aravis的代码或者它用到的第三方库有定义与Qt冲突,因此需要做一些隔离操作:

#undef slot
#undef slots
#undef signal
#undef signals
#undef emit
#include <aravis-0.8/arv.h>
#define slot Q_SLOT
#define slots Q_SLOTS
#define signal Q_SIGNAL
#define signals Q_SIGNALS
#define emit Q_EMIT

关于这个隔离的问题,可以看看我之前的另外一篇文章【Qt关键字(signal、slot等)与第三方库中的函数、变量冲突的解决办法】


参考:
【用开源Aravis访问工业相机】
【Aravis-0.8 Installation and Debug】
【获取Meson】

### 回答1: GigE Vision是一种高速图像传输技术,能够实现高速和高带宽图像数据的传输。GigE Vision开源是一种用于实现GigE Vision协议的软件,它为图像采集设备和图像处理应用程序提供高效的通信接口。 GigE Vision开源具有开源免费的特点,可以帮助开发者快速开发高质量的应用程序。它为开发者提供了一种简单而有效的方式来管理和控制GigE Vision相机的图像采集,并将其传输到图像处理系统。 GigE Vision开源支持多种平台和操作系统,包括Windows、Linux、MacOS等,提供多种编程语言接口,如C++、Python等。此外,GigE Vision开源支持最新的GigE Vision 2.0协议,为用户提供更高的图像传输速度和更多的功能。 总之,GigE Vision开源是一种可靠和高效的GigE Vision协议实现方案,它使得开发者能够更加轻松地开发出高质量的图像采集和处理应用程序。 ### 回答2: GigE Vision是一种远程高速图像采集技术。为了方便使用和开发,需要用到符合GigE Vision标准的相机与软件。而GigE Vision开源则是一种开源的软件,可以帮助开发者快速实现GigE Vision的相关功能。 GigE Vision开源主要包含两个部分,一个是相机驱动,另一个是软件开发包。相机驱动能够提供相机连接、图像采集和设备控制等功能;软件开发包则提供了API、示例代码以及控制软件等工具。 采用GigE Vision开源可以大大降低开发成本和周期,同时提高开发的效率和软件的可维护性。由于是开源的,所以还可以根据实际需求进行二次开发和定制。 总之,GigE Vision开源的出现使得使用GigE Vision技术的图像采集变得更加容易和便捷,对于需要高速图像采集的数码相机、机器视觉等领域有着重要的应用价值。 ### 回答3: GigE Vision工业相机的一种常用接口标准,其数据传输速度快、稳定性高,在工业自动化领域被广泛运用。而 GigE Vision 开源则是一种用于处理 GigE Vision 相机数据的开源软件。该可以帮助用户开发出更完善的图像处理应用,方便用户在自己的应用中集成 GigE Vision 相机。 GigE Vision 开源支持多种平台,包括 Windows、Linux 和 macOS 等,可以方便地在不同的操作系统下进行应用开发。该开源还提供了多种编程语言的接口,如 C++、C#、Python 等,方便用户选择使用自己熟悉的编程语言进行开发。 此外,GigE Vision 开源支持多种 GigE Vision 相机厂家,如 Basler、Teledyne DALSA、JAI等,使得用户可以方便地使用不同品牌的相机进行开发。开源提供了大量功能模块,如数码摄像机目录结构、图像同步、触发器等,方便用户对 GigE Vision 相机进行控制。 总之,GigE Vision 开源是一个理想的工具,可让用户灵活地开发和控制 GigE Vision 相机,从而提高图像处理效率和应用质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值