上一个教程 : 在 MacOS 中安装
下一个教程 : 使用 CUDA 为 Tegra 构建 OpenCV
原作者 | Alexander Smorkalov |
---|---|
兼容性 | OpenCV >= 3.0 |
警告
本教程可能包含过时信息。
本步骤在 Ubuntu Linux 12.04 上进行了测试,但也适用于其他 Linux 发行版。其他发行版的软件包名称和交叉编译工具名称可能有所不同。在 ARM 平台上有几种流行的 EABI 版本。本教程是针对 gnueabi 和 gnueabihf 编写的,但其他版本只需稍作改动即可运行。
前提条件
- 装有 Linux 的主机;
- Git;
- CMake 2.6 或更高版本;
- ARM 交叉编译工具:gcc、libstc++ 等。根据目标平台,您需要选择 gnueabi 或 gnueabihf 工具。安装 gnueabi 的命令
sudo apt-get install gcc-arm-linux-gnueabi
gnueabihf 的安装命令
sudo apt-get install gcc-arm-linux-gnueabihf
- pkgconfig;
- 主机系统的 Python 2.6;
- [可选] 用于 armeabi(hf) 的 ffmpeg 或 libav 开发包:libavcodec-dev、libavformat-dev、libswscale-dev;
- [可选] GTK+2.x 或更高版本,包括头文件(libgtk2.0-dev),用于 armeabi(hf);
- [可选] libdc1394 2.x;
- [可选] libjpeg-dev、libpng-dev、libtiff-dev、libjasper-dev,用于 armeabi(hf)。
获取 OpenCV 源代码
您可以使用 sourceforge 中的最新稳定 OpenCV 版本,也可以从我们的 Git 代码库中获取最新快照。
获取最新的稳定 OpenCV 版本
- 访问我们在 Sourceforge 上的页面;
- 下载源代码压缩包并解压。
从 Git 仓库获取最新版 OpenCV
启动 Git 客户端并克隆 OpenCV 仓库
在 Linux 中,可在终端中执行以下命令:
cd ~/<my_working _directory>
git clone https://github.com/opencv/opencv.git
构建 OpenCV
- 创建一个构建目录,使其成为当前目录,然后运行以下命令:
cmake [< 一些可选参数>] -DCMAKE_TOOLCHAIN_FILE=< OpenCV 源代码目录路径>/platforms/linux/arm-gnueabi.toolchain.cmake<OpenCV源代码目录路径>
工具链默认使用 gnueabihf EABI
约定。添加 -DSOFTFP=ON cmake 参数以打开 softfp 编译器。
cmake [<some optional parameters>] -DSOFTFP=ON -DCMAKE_TOOLCHAIN_FILE=<Path to the OpenCV source directory>/platforms/linux/arm-gnueabi.toolchain.cmake <path to the OpenCV source directory> 指定 OpenCV 源代码目录的路径>
例如
cd ~/opencv/platforms/linux
mkdir -p build_hardfp
cd build_hardfp
cmake -DCMAKE_TOOLCHAIN_FILE=.../arm-gnueabi.toolchain.cmake ... /..
- 在 build (<cmake_binary_dir>) 目录中运行 make:
make
注意事项
您可以选择通过 install/strip make target
从创建的库中删除符号信息。该选项会生成更小的二进制文件(小两倍),但会增加进一步调试的难度。
启用硬件优化
根据目标平台架构的不同,可以使用不同的指令集。默认情况下,编译器为 armv5l 生成的代码不包含 VFPv3 和 NEON 扩展。在 cmake 命令行中添加 -DENABLE_VFPV3=ON 可为 VFPv3 生成代码,添加 -DENABLE_NEON=ON 可使用 NEON SIMD 扩展。
多核 ARM SoC 也支持 TBB。添加 -DWITH_TBB=ON 和 -DBUILD_TBB=ON 即可启用。使用 Cmake 脚本从项目官方网站 http://threadingbuildingblocks.org/ 下载 TBB 源代码并编译。