本帖最后由 风精灵 于 2025-7-19 09:08 编辑

       OpenCV在视觉算法中的功能非常强大,其中一个原因就是该算法库一直在与时俱进的更新最新的算法,对于具有专利的算法(如SURF)以及一些还没有稳定的算法,OpenCV会将其置于扩展模块中,这些扩展模块包含在opencv_contrib代码库中。对于该第三方库,选择手动编译,不使用buildroot构建。

1. 需要先确认已经安装了opencv4 ,ELF2-linux-source/buildroot/output/elf2_fs/build/ 路径下有opencv4 的文件夹
【新提醒】buildroot中更换opencv版本 - ELF 2专区 - ElfBoard嵌入式Linux开发板学习社区 - Powered by Discuz!
【新提醒】Linux5.10.209 安装openCV4 的方法 - ELF 2专区 - ElfBoard嵌入式Linux开发板学习社区 - Powered by Discuz!

2.将附件opencv4-contrib-4.5.5 压缩包解压到ELF2-linux-source/buildroot/output/elf2_fs/build/目录下。
源码:https://github.com/opencv/opencv_contrib  contrib 的git 仓库。

3.配置cmake 工具。
elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0$ sudo apt-get install cmake
由于没有buildroot帮我们配置交叉编译器。所以需要我们自行配置。进到ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/platforms/linux/路径下,修改aarch64-gnu.toolchain.cmake 文件。将GNU_MACHINE的路径替换成buildroot 系统里自带的交叉编译器的路径+前缀。
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version")
set(GNU_MACHINE "/home/elf/work/ELF2-linux-source/buildroot/output/elf2_fs/host/bin/aarch64-buildroot-linux-gnu" CACHE STRING "GNU compiler triple")
include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")

4. 进入到ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/目录(opencv4的源码目录)下, 创建一个名为build和add_contrib_install的文件夹,然后进入build。通过如下命令,编译opencv4.10.0及contrib第三方库。
elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0$ mkdir build
elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0$ mkdir add_contrib_install
elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0$ cd build
elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/build$ cmake .. -D CMAKE_INSTALL_PREFIX=../add_contrib_install -DCMAKE_TOOLCHAIN_FILE=/home/elf/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/platforms/linux/aarch64-gnu.toolchain.cmake -DOPENCV_EXTRA_MODULES_PATH=/home/elf/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv_contrib-4.5.5/modules -DBUILD_opencv_xphoto=OFF -DBUILD_opencv_rgbd=OFF -DBUILD_opencv_ximgproc=OFF -DBUILD_opencv_xfeatures2d=OFF

CMAKE_INSTALL_PREFIX:表示生成的bin和libs的存放路径。
DCMAKE_TOOLCHAIN_FILE:表示cmake 交叉编译器的路径
DOPENCV_EXTRA_MODULES_PATH:表示contrib 源码中modules 的路径

5.make 进行编译
执行nproc,查看虚拟机有几个核。返回值为4,所以执行make -j4
elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/build$ nproc
4
elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/build$ make -j4

6. 执行make install
生成的bin和lib 将被install到CMAKE_INSTALL_PREFIX宏指定的../add_contrib_install目录中。将add_contrib_install 目录中 的lib和include 目录下的文件复制到开发板上。
elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/build$ make install







    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Powered by Discuz! X3.5  © 2001-2013 Comsenz Inc.