OpenCV的arm交叉编译版本安装步骤


因为项目需要,需要在主机上交叉编译,想在主机上安装能在arm64版本的opencv。

因为对编译过程的不了解,所以上网查阅了很多资料,发现网上大多数都是直接安装主机环境的opencv,很少有交叉编译版本的安装教程,我费尽周折终于安装并且编译完毕。于是,把自己的学习经历记录下来,希望能帮到和我一样的初学者。

主机:ubuntu20.04

目标机:野火鲁班猫4:RK3588


一、主机步骤

  1. 首先安装依赖包
sudo apt update
sudo apt install build-essential cmake git pkg-config libgtk-3-dev \
    libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
    libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \
    gfortran openexr libatlas-base-dev python3-dev python3-numpy \
    libtbb2 libtbb-dev libdc1394-22-dev
  1. 安装arm64版本的交叉编译器(如果是arm平台则安装gcc-arm-linux-gnueabig++-arm-linux-gnueabi,后文相应位置也是得替换)
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
  1. 在家目录下制作cmake交叉编译工具链文件aarch64-toolchain.cmake
cd ~
vim aarch64-toolchain.cmake

​ 把以下代码复制进去

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)

set(CMAKE_C_COMPILER /path/to/aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER /path/to/aarch64-linux-gnu-g++)
set(CMAKE_FIND_ROOT_PATH /path/to/aarch64-linux-gnu)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
  1. 创建文件夹opencv_src并且进入,下载OpenCV和OpenCV Contrib模块
mkdir ~/opencv_src && cd ~/opencv_src
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
  1. 进入opencv目录,创建构建目录并且配置CMake
cd opencv
mkdir build_arm64 && cd build_arm64
cmake -D CMAKE_BUILD_TYPE=RELEASE \
	-DCMAKE_TOOLCHAIN_FILE=/home/xbpc/aarch64-toolchain.cmake \
    -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4_arm64 \
    -D INSTALL_C_EXAMPLES=ON \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
    -D OPENCV_EXTRA_MODULES_PATH=/home/xbpc/opencv_src/opencv_contrib/modules\
    -D BUILD_EXAMPLES=ON ..

以下是每个CMake参数的详细解释:

  1. -D CMAKE_BUILD_TYPE=RELEASE

    • 解释:指定构建类型为Release,以启用编译器优化并生成更快的代码。其他常见的构建类型包括DEBUGRELWITHDEBINFO(Release with Debug Information)和MINSIZEREL(Minimum Size Release)。
  2. -D CMAKE_TOOLCHAIN_FILE=/home/xbpc/aarch64-toolchain.cmake

    • 解释:指定工具链文件,用于交叉编译。这个文件包含了编译器、链接器等工具的路径和设置,适用于为不同架构(如ARM64)编译代码。
  3. -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4_arm64

    • 解释:指定OpenCV的安装路径。编译完成后,OpenCV库和相关文件将被安装到该路径下。通常,默认的安装路径是/usr/local
  4. -D INSTALL_C_EXAMPLES=ON

    • 解释:启用安装C语言示例代码。这些示例代码有助于开发者学习如何使用OpenCV的C语言接口。
  5. -D INSTALL_PYTHON_EXAMPLES=ON

    • 解释:启用安装Python语言示例代码。这些示例代码有助于开发者学习如何使用OpenCV的Python接口。
  6. -D OPENCV_GENERATE_PKGCONFIG=ON

    • 解释:生成pkg-config文件。这些文件可以帮助开发者在编写应用程序时轻松找到和链接OpenCV库。
  7. -D OPENCV_EXTRA_MODULES_PATH=/home/xbpc/下载/opencv_src/opencv_contrib/modules

    • 解释:指定OpenCV Contrib模块的路径。这些模块是OpenCV的扩展模块,提供了更多的功能和特性。例如,非免费或实验性的算法。
  8. -D BUILD_EXAMPLES=ON

    • 解释:启用构建OpenCV示例代码。启用此选项后,示例代码将会被编译,可以帮助开发者了解如何使用OpenCV的各种功能。
  9. 编译

make -j$(nproc)
  1. 安装
sudo make install
  1. 查看版本
pkg-config --modversion opencv4

二、目标机步骤

因为要在目标机运行所以,目标机上也得装一套。

  1. 首先安装依赖包
sudo apt update
sudo apt install build-essential cmake git pkg-config libgtk-3-dev \
    libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
    libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \
    gfortran openexr libatlas-base-dev python3-dev python3-numpy \
    libtbb2 libtbb-dev libdc1394-22-dev
  1. 创建文件夹opencv_src并且进入,下载OpenCV和OpenCV Contrib模块
mkdir ~/opencv_src && cd ~/opencv_src
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
  1. 进入opencv目录,创建构建目录并且配置CMake
cd opencv
mkdir build_arm64 && cd build_arm64
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4_arm64 \
    -D INSTALL_C_EXAMPLES=ON \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
    -D OPENCV_EXTRA_MODULES_PATH=/home/cat/opencv_src/opencv_contrib/modules\
    -D BUILD_EXAMPLES=ON ..
  1. 编译
make -j$(nproc)
  1. 安装
sudo make install
  1. 查看版本
pkg-config --modversion opencv4

好啦,现在已经可以愉快的编译运行啦,有问题欢迎交流。

  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值