[ OpenCV 编译安装 ] OpenCV 3.2.0 + Contrib 在 Firefly RK3399 上编译安装

edge-computing


§1. General Purposes: Why I wrote this?


这几天在 Firefly RK3399 上部署需要 OpenCV 3.2.0 扩展版本的算法 Demo 。在Ubuntu 18.04 x86 架构下编译 OpenCV 3.2.0 + Contrib 比较容易,因此开发调试过程中没有什么问题,但是在 Firefly RK3399 上编译就出现了许多问题,我猜可能是因为 Contrib 库对系统的自带库很有版本依赖性,故此记录。这里先备注一下 Firefly RK3399 上的系统信息:

firefly@firefly:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.4 LTS
Release:	18.04
Codename:	bionic

Firefly 原装的 Ubuntu 应当是 16.04,但是后来由于同事对其进行了统一的系统升级,因此全部切换成了 18.04,如果用 apt install 进行 OpenCV 安装,对应版本应当是 3.2.0。因此我选用 OpenCV 3.2.0 + Contrib 源码在 Firefly 进行编译。


§2. Compiling Details: How I successfully compiled Opencv3.2.0+contrib?


a. Required Packages

首先我们使用 apt install 安装一些必要的依赖库:

firefly@firefly:~$ sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

以上库都是基本上必须的。

b. Optional Packages

以下依赖库不是必须但是可选:

firefly@firefly:~$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev

c. Compile Option Settings

我们假设已经下载了正确的 OpenCV 3.2.0 + Contrib 源码包,可以从 OpenCV 官方 GitHub 以及 OpenCV Contrib 官方 GitHub 获取。

编译选项如下:(这里要注意Python版本、contrib 目录位置等等,请依据真实情况选择)

特别补充: 这里我选择的 Python 接口是 Python3.6.9,因此我事先安装了 python3-pip、Cython、numpy。

firefly@firefly:opencv-3.2.0/build/$ cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DPYTHON_EXECUTABLE=$(which python3) \
-DPYTHON_NUMPY_INCLUDE_DIRS=/home/firefly/.local/lib/python3.6/site-packages/numpy/core/include/ \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.6m \
-DPYTHON_INCLUDE_DIR2=/usr/include/aarch64-linux-gnu/python3.6m \
-DPYTHON_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.6m.so \
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.2.0/modules \
../

firefly@firefly:OPENCV/build/$ make -j$(nproc --all)

firefly@firefly:OPENCV/build/$ sudo make install

§3. Errors Unblock: How I unblock these errors?


这次编译遇到的最大的问题是:

//usr/lib/aarch64-linux-gnu/libatk-1.0.so.0: undefined reference to 'g_log_structured_standard'
//usr/lib/aarch64-linux-gnu/libgio-2.0.so.0: undefined reference to 'g_build_filename_valist'

可以搜到的最接近的问题可以参考如下:StackOverflow问题原因:有个旧版本的glib不提供所示的函数实现,因此需要更新glib的链接。

# Some Useful Scripts:
pkg-config --modversion glib-2.0
pkg-config --cflags --libs glib-2.0
grep -l g_log_structured_standard /usr/lib/aarch64-linux-gnu/*glib*.so*

§4. Summary: What I have done?


其实通篇看来也没做啥,主要就是成功在安装了 Ubuntu 18.04 的 Firefly RK3399 上成功编译了 OpenCV 3.2.0 + Contrib。其实在使用中还是有一些问题的,毕竟 contrib 库还是不如 core 稳定啊。有什么问题还望广大专家读者不吝斧正!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值