0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ElfBoard技术贴|如何在【RK3588】ELF 2开发板中安装openCV4以及第三方库contrib

ElfBoard ? 2025-08-05 11:03 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式应用开发领域,OpenCV凭借其丰富的功能成为开发者处理计算机视觉任务的首选工具。Buildroot为开发者提供了便捷的嵌入式系统构建环境,其默认集成的OpenCV版本为4.5.4。 然而实际应用中,不同项目对功能、性能等方面常有特定需求,开发者可能需要使用其他版本的OpenCV,此时便需替换Buildroot的默认配置。 同时,为满足更复杂场景需求并扩展功能,添加OpenCV的contrib模块也便成了常见工作,下面将详细介绍这一过程的实现。

场景1:配置Buildroot中默认OpenCV版本

Buildroot源码中默认的OpenCV版本为4.5.4

1、由于Linux5.10.209系统默认是不编译Buildroot 的,所以首先需要在虚拟机上编译一遍Buildroot,方法见附件《ELF 2开发板编译手册》

2、Linux5.10.209内核版本的Buildroot系统里的OpenCV默认配置的版本是4.5.4

elf@ubuntu:~/work/ELF2-linux-source$ ./build.sh bconfig

路径如下:


-> Target packages                                                   
   -> Libraries
       -> Graphics
           -> opencv4                        
wKgZPGiRbq6AIUQzAASbOh8nY_M750.png


再按下“Enter”键进入OpenCV4里面进行选择,选择样式如下图(注意和红色框选择的一样即可):

wKgZO2iRch6AQ30JAAaCAe51PBY570.png

修改完成之后保存退出。

3、编译Buildroot

elf@ubuntu:~/work/ELF2-linux-source$./build.sh rootfs

ELF2-linux-source/buildroot/output/elf2_fs/host/aarch64-buildroot-linux-gnu/sysroot/usr/目录下会有一个include目录和一个lib目录,编译出的OpenCV库头文件与库文件就放在这两个目录里。

在include目录里可以找到OpenCV4目录,在lib目录里可以找到libopencv_*开头的所有OpenCV库文件,说明你已将OpenCV加入到Buildroot系统中。

场景2:Buildroot中更换OpenCV版本

参考场景1,只需在Buildroot中完成OpenCV的配置添加,无需执行文件系统编译。

1、虚拟机安装sha校验工具

sudo apt-getinstall hashalot

2、更换版本需要删除ELF2-linux-source/buildroot/package/opencv4/目录下的patch 文件

elf@ubuntu:~/work/ELF2-linux-source$rm buildroot/package/opencv4/0001-modules-videoio-src-cap_ffmpeg_impl.hpp-fix-build-wi.patch

3、修改ELF2-linux-source/buildroot/package/opencv4/opencv4.mk文件。修改版本为4.10.0, 添加OpenCL支持

#改一下version,然后针对不同版本编译选项做修改即可
#OPENCV4_VERSION = 4.5.4
OPENCV4_VERSION = 4.10.0
OPENCV4_SITE = $(call github,opencv,opencv,$(OPENCV4_VERSION))
OPENCV4_INSTALL_STAGING = YES
OPENCV4_LICENSE = Apache-2.0
OPENCV4_LICENSE_FILES = LICENSE
OPENCV4_CPE_ID_VENDOR = opencv
OPENCV4_CPE_ID_PRODUCT = opencv
OPENCV4_SUPPORTS_IN_SOURCE_BUILD = NO
# Disabled features (mostly because they are not available in Buildroot), but
# - eigen: OpenCV does not use it, not take any benefit from it.
OPENCV4_CONF_OPTS += \
        -DWITH_1394=OFF \
        -DWITH_CLP=OFF \
        -DWITH_EIGEN=OFF \
        -DWITH_GDAL=OFF \
        -DWITH_GPHOTO2=OFF \
        -DWITH_GSTREAMER_0_10=OFF \
        -DWITH_LAPACK=OFF \
        -DWITH_MATLAB=OFF \
        # -DWITH_OPENCL=OFF
        -DWITH_OPENCL=ON \  #添加OpenCL支持
        -DWITH_OPENCL_SVM=OFF \
        -DWITH_OPENEXR=OFF \
        -DWITH_OPENNI2=OFF \
        -DWITH_OPENNI=OFF \
        -DWITH_UNICAP=OFF \
        -DWITH_VA=OFF \
        -DWITH_VA_INTEL=OFF \
        -DWITH_VTK=OFF \
        -DWITH_XINE=OFF

4、编译Buildroot

修改完成后,执行编译Buildroot 的命令,会自动下载OpenCV4.10.0 的压缩包到ELF2-linux-source/buildroot/output/elf2_fs/build/目录下。

elf@ubuntu:~/work/ELF2-linux-source$./build.sh rootfs

ELF2-linux-source/buildroot/output/elf2_fs/host/aarch64-buildroot-linux-gnu/sysroot/usr/目录会有一个include目录和一个lib目录,编译出的OpenCV库头文件与库文件就放在这两个目录里。

场景3:添加OpenCV第三方库contrib

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

对于该第三方库,选择手动编译,不使用buildroot构建。

1、需要先确认OpenCV4,ELF2-linux-source/buildroot/output/elf2_fs/build/路径下安装有OpenCV4 的文件夹

2、将附件OpenCV4-contrib-4.5.5 压缩包解压到ELF2-linux-source/buildroot/output/elf2_fs/build/目录

源码:https://github.com/opencv/opencv_contrib contrib的git 仓库。

3、配置cmake 工具

sudo apt-getinstall 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/

目录, 创建一个名为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.1
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6069

    文章

    45071

    浏览量

    653762
  • 嵌入式
    +关注

    关注

    5161

    文章

    19777

    浏览量

    319538
  • OpenCV
    +关注

    关注

    32

    文章

    647

    浏览量

    43250
  • Linux开发
    +关注

    关注

    0

    文章

    40

    浏览量

    7382
  • RK3588
    +关注

    关注

    7

    文章

    431

    浏览量

    6077
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞芯微RK3588开发板RK3588 EVB和RK3588S EVB解读

    瑞芯微RK3588开发板RK3588 EVB和RK3588S EVB解读 瑞芯微旗舰芯RK3588系列
    的头像 发表于 09-22 15:54 ?2.1w次阅读
    瑞芯微<b class='flag-5'>RK3588</b><b class='flag-5'>开发板</b><b class='flag-5'>RK3588</b> EVB和<b class='flag-5'>RK3588</b>S EVB解读

    ElfBoard技术|如何在RK3588ELF 2开发板上进行根系统的定制

    ELF 2开发板已经适配了Linux 5.10及Elf2 Desktop 22.04操作系统,其中Elf2 Desktop 22.04系统是
    的头像 发表于 07-02 16:33 ?2394次阅读
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如<b class='flag-5'>何在</b>【<b class='flag-5'>RK3588</b>】<b class='flag-5'>ELF</b> <b class='flag-5'>2</b><b class='flag-5'>开发板</b>上进行根系统的定制

    如何把第三方加到PROTEUS

    新手求教,弱弱的问下,下了一个第三方,说是要先安装,再添加路径,可是我下来的第三方没有看到安装
    发表于 06-15 22:32

    opencv直接在RK3588开发板上进行编译

    RK3588 c++的开发中用到了opencv,但是官方的SDK例程opencv
    发表于 09-15 17:56

    鸿蒙开发怎么引入第三方

    Android 发展到现在不仅提供了很多 API,还提供了很多第三方。这降低了我们开发者的开发难度,提升了开发效率,让应用
    的头像 发表于 10-11 14:11 ?4717次阅读

    何在Raspberry Pi 3上安装OpenCV4

    今天我们将学习如何在 Raspberry Pi 3 上安装 OpenCV4 ,以便我们可以将其用于计算机视觉应用程序。这将允许 OpenCV
    的头像 发表于 09-08 16:09 ?2019次阅读
    如<b class='flag-5'>何在</b>Raspberry Pi 3上<b class='flag-5'>安装</b><b class='flag-5'>OpenCV4</b><b class='flag-5'>库</b>

    【首发开箱】揭开RK3588开发板的神秘面纱!

    教你玩转RK3588开发板硬声入驻企业:瑞芯微教程包含以下内容:1、开箱:EVB开箱接线2、外部接口:EVB硬件接口介绍。3、环境搭建:EVB使用及调试方法。4、系统升级:
    的头像 发表于 03-14 11:24 ?4008次阅读
    【首发开箱】揭开<b class='flag-5'>RK3588</b><b class='flag-5'>开发板</b>的神秘面纱!

    迅为RK3588开发板-基于瑞芯微RK3588摄像头方案

    RK3588开发板
    的头像 发表于 06-09 11:09 ?5597次阅读
    迅为<b class='flag-5'>RK3588</b><b class='flag-5'>开发板</b>-基于瑞芯微<b class='flag-5'>RK3588</b>摄像头方案

    学会安装第三方开源

    你好,我是爱吃鱼香ROS的小鱼。秉承着拒绝重复造轮子的ROS精神,本节我们学习如何在我们的工程里安装第三方开源
    的头像 发表于 07-13 14:35 ?1457次阅读
    学会<b class='flag-5'>安装</b><b class='flag-5'>第三方</b>开源<b class='flag-5'>库</b>

    rk3588有哪些开发板

    AIO-3288J。下面会逐一介绍这些开发板。 一、RockPro64 RockPro64是Radxa公司推出的一款基于rk3588 SoC的开发板,采用LPDDR4 8GB、64位
    的头像 发表于 08-15 17:04 ?3128次阅读

    itop-RK3588开发板机器视觉开发OpenCV-Python的安装

    itop-RK3588开发板机器视觉开发OpenCV-Python的安装
    的头像 发表于 01-26 15:18 ?4737次阅读
    itop-<b class='flag-5'>RK3588</b><b class='flag-5'>开发板</b>机器视觉<b class='flag-5'>开发</b><b class='flag-5'>OpenCV</b>-Python的<b class='flag-5'>安装</b>

    RK3588!黑神话悟空,启动?-迅为电子RK3588开发板

    RK3588!黑神话悟空,启动?-迅为电子RK3588开发板
    的头像 发表于 08-30 14:13 ?1482次阅读
    <b class='flag-5'>RK3588</b>!黑神话悟空,启动?-迅为电子<b class='flag-5'>RK3588</b><b class='flag-5'>开发板</b>

    迅为电子RK3588S开发板第三章Buildroot系统功能测试

    迅为电子RK3588S开发板第三章Buildroot系统功能测试
    的头像 发表于 09-02 14:45 ?1547次阅读
    迅为电子<b class='flag-5'>RK3588</b>S<b class='flag-5'>开发板</b><b class='flag-5'>第三</b>章Buildroot系统功能测试

    技术分享|iTOP-RK3588开发板Ubuntu20系统旋转屏幕方案

    技术分享|iTOP-RK3588开发板Ubuntu20系统旋转屏幕方案
    的头像 发表于 04-18 15:19 ?614次阅读
    <b class='flag-5'>技术</b>分享|iTOP-<b class='flag-5'>RK3588</b><b class='flag-5'>开发板</b>Ubuntu20系统旋转屏幕方案

    ElfBoard技术|【RK3588ELF 2开发板开机自启动详解

    在嵌入式系统开发,合理管理开机自启动项目能够优化系统启动流程,确保关键服务和应用按时加载运行。本文将详细介绍在ELF2开发板Linux5.10.209系统下基于SystemVinit
    的头像 发表于 06-27 16:20 ?1304次阅读
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|【<b class='flag-5'>RK3588</b>】<b class='flag-5'>ELF</b> <b class='flag-5'>2</b><b class='flag-5'>开发板</b>开机自启动详解