1. 概述
本文主要讲述关于OpenCV
的安装,以及安装过程中的问题解决。
2. 源码安装
2.1. 下载
关于opencv
一般推荐源码安装,可以通过如下方式下载opencv
源码。
- opencv
通过下述命令下载源码
$ git clone git@github.com:opencv/opencv.git
- opencv_contrib
包含opencv
的扩展模块
$ git clone git@github.com:opencv/opencv_contrib.git
2.2. 编译
2.2.1. 本地编译
- 创建编译目录
$ mkdir build
$ cd build
- 编译选项配置
-
编译类型
-D CMAKE_BUILD_TYPE=RELEASE
:指定生成正式版本 -
指定扩展模块的路径
-D OPENCV_EXTRA_MODULES_PATH=path/to/opencv_contrib
: 指定扩展模块的具体位置; -
安装路径指定
-D CMAKE_INSTALL_PREFIX=/usr/local
: 指定opencv
库的安装位置; -
编译目标文件
下述命令根据实际计算机的核心调用多线程编译,加快编译速度;
$ make -j$(nproc)
- 安装
编译成功后,可以将opencv
库安装到相应位置;
$ sudo make install
2.2.2. 交叉编译
2.2.2.1 安装交叉编译器
- ARMv7
根据目标处理器是否支持hard float
选择对应版本
$ sudo apt-get install g++-arm-linux-gnueabihf gcc-arm-linux-gnueabihf
- ARMv8
适用于64位的编译器
$ sudo apt-get install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
2.2.2.2. 指定工具链文件
在目录opencv/platforms/linux
中包含aarch64-gnu.toolchain.cmake
和 arm-gnueabi.toolchain.cmake
等工具链配置文件,根据实际目标处理器选择对应文件
- ARMv7
$ cmake -D CMAKE_TOOLCHAIN_FILE="/path/to/opencv/platforms/linux/arm-gnueabi.toolchain.cmake" ..
- ARMv8
$ cmake -D CMAKE_TOOLCHAIN_FILE="/path/to/opencv/platforms/linux/aarch64-gnu.toolchain.cmake" ..
2.2.2.3. 编译错误
- 失效
BUILD_opencv_freetype=OFF
可以解决如下错误:
/usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/bin/ld: cannot find -lfreetype
/usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/bin/ld: cannot find -lharfbuzz