目录
前言
最近在做采集软件的开发,由于我自己使用过Huaray和Basler两个品牌的相机,所以在设计软件时尝试设计统一的接口去控制不同品牌和型号相机的相同或类似的行为。当然,我的设计思路都是建立在调用各品牌SDK的基础上。
后来我去外网搜索,发现了一个开源项目Aravis,它通过提供一个通用的API,让我们能够不受相机的品牌或型号限制,自由地进行图像采集和相机控制,支持从简单的图像捕获到复杂的相机设置调整的一系列操作。
项目地址:https://github.com/AravisProject/aravis
Aravis简介
Aravis是一个基于glib/gobject的库,允许开发者对遵循GenICam标准的网络相机进行通信和控制。它目前实现了工业相机使用的GigE和USB3协议。它还提供了一个简单的以太网相机模拟器和视频查看器。
依赖关系说明
- Aravis库依赖于zlib、libxml2和glib2,若选择使用USB支持则需要依赖libusb1。
- GStreamer插件除了需要Aravis库的依赖外,还依赖于GStreamer1。
- 视频查看器依赖于GStreamer1、Gtk+3以及Aravis库的依赖。
- 所需的版本在Aravis源码中的meson.build文件里有指定。
- 可以只构建库本身,以此将依赖减少到最少。
安装过程
meson安装
由于Aravis是使用meson进行项目构建的,所以我们先安装meson:
bash
apt install meson
安装完毕后验证是否安装成功
bash
meson --version
aravis源文件下载
作者对aravis使用者的建议是最好使用发行版本而不是直接git checkout
在github上找到所需的aravis的发行版本,并下载:https://github.com/AravisProject/aravis/releases
我选择的是0.8.31版本:
下载压缩包后解压即可
bash
tar -xvf aravis-0.8.31.tar.xz
构建和安装aravis
进入工作目录,然后执行以下命令:
bash
meson setup build
cd build
ninja
ninja install
在执行meson setup build
可能会有安装失败的项点,错误解决方法可以参考文末的《安装过程中遇到的问题》
至此安装已完成
视频查看器
找到Aravis双击打开,即可查看已连接的相机设备
安装过程中遇到的问题
meson版本过低
我安装的aravis版本是0.8.31,这个版本aravis的编译依赖0.57.0及以上版本的meson,而我通过apt包管理器下载的meson版本为0.53.2,不满足需求。因此要对meson进行升级操作:
①首先安装或升级pip
bash
apt install python3-pip
或
pip3 install --upgrade pip
②然后移除旧版本meson避免版本冲突
bash
apt remove meson
③使用pip安装最新版本的meson
推荐使用--user选项,这样可以将Meson安装在用户目录下,避免对系统全局Python环境造成潜在的干扰
bash
pip3 install --upgrade --user meson
④更新环境变量
在~/.bashrc
文件中添加
bash
export PATH="$HOME/.local/bin:$PATH"
然后重启系统生效
⑤验证meson版本
安装或升级完成后,通过以下命令检查Meson的版本,以确保安装或升级成功
bash
meson --version
我的安装结果:
CMake版本过低
在构建项目的时候,提示了以下错误信息:
说明我系统中的CMake版本过低,需要升级。
注意:apt包管理器中的CMake版本不是最新的,所以我们不使用apt install
更新CMake
我们采用从源码编译的方法更新:
①移除旧cmake防止版本冲突
bash
apt remove cmake
②下载源码
进入CMake官网下载所需版本的源码,我下载的是3.29.0发布版本
③解压下载的源码包
bash
tar -zxvf cmake-3.29.0.tar.gz
④编译和安装CMake
bash
cd ./cmake-*
./bootstrap
make
make install
⑤添加环境变量
在~/.bashrc
中添加
bash
export PATH=/path/to/cmake/bin:$PATH
/path/to/cmake
是解压出来的源码的路径
⑥验证CMake
bash
cmake --version
缺少GStreamer组件
直接使用包管理器安装即可
bash
apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev