<ul id="gu0q4"></ul>
  • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
    <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    • <samp id="gu0q4"></samp>

      技術(shù)貼|如何在【RK3588】ELF 2開發(fā)板中安裝openCV4以及第三方庫contrib原創(chuàng)

      發(fā)布時間:2025-08-02 10:35:53
      RK3588 RK3588開發(fā)板 openCV4 第三方庫contrib

      在嵌入式應(yīng)用開發(fā)領(lǐng)域,OpenCV憑借其豐富的功能成為開發(fā)者處理計算機視覺任務(wù)的首選工具。Buildroot為開發(fā)者提供了便捷的嵌入式系統(tǒng)構(gòu)建環(huán)境,其默認集成的OpenCV版本為4.5.4。 然而實際應(yīng)用中,不同項目對功能、性能等方面常有特定需求,開發(fā)者可能需要使用其他版本的OpenCV,此時便需替換Buildroot的默認配置。 同時,為滿足更復(fù)雜場景需求并擴展功能,添加OpenCV的contrib模塊也便成了常見工作,下面將詳細介紹這一過程的實現(xiàn)。

      ?

      場景1:配置Buildroot中默認OpenCV版本

      Buildroot源碼中默認的OpenCV版本為4.5.4

      ?

      1、由于Linux5.10.209系統(tǒng)默認是不編譯Buildroot 的,所以首先需要在虛擬機上編譯一遍Buildroot,方法見附件《ELF 2開發(fā)板編譯手冊》

      ?

      2、Linux5.10.209內(nèi)核版本的Buildroot系統(tǒng)里的OpenCV默認配置的版本是4.5.4

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

      ?

      路徑如下:

      ->?Target packages ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ?->?Libraries? ? ? ?-> Graphics? ? ? ? ? ?-> opencv4

      ?

      再按下“Enter”鍵進入OpenCV4里面進行選擇,選擇樣式如下圖(注意和紅色框選擇的一樣即可):

      修改完成之后保存退出。

      ?

      3、編譯Buildroot

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

      ?

      以下目錄下會有一個include目錄和一個lib目錄,編譯出的OpenCV庫頭文件與庫文件就放在這兩個目錄里。

      ELF2-linux-source/buildroot/output/elf2_fs/host/aarch64-buildroot-linux-gnu/sysroot/usr/

      ?

      在include目錄里可以找到OpenCV4目錄,在lib目錄里可以找到libopencv_*開頭的所有OpenCV庫文件,說明你已將OpenCV加入到Buildroot系統(tǒng)中。

      ?

      場景2:Buildroot中更換OpenCV版本

      參考場景1,只需在Buildroot中完成OpenCV的配置添加,無需執(zhí)行文件系統(tǒng)編譯。

      ?

      1、虛擬機安裝sha校驗工具

      sudo apt-get?install hashalot

      ?

      2、更換版本需要刪除以下目錄下的patch 文件

      ELF2-linux-source/buildroot/package/opencv4/

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

      ?

      3、修改以下文件。修改版本為4.10.0, 添加OpenCL支持

      ELF2-linux-source/buildroot/package/opencv4/opencv4.mk

      #改一下version,然后針對不同版本編譯選項做修改即可#OPENCV4_VERSION = 4.5.4OPENCV4_VERSION = 4.10.0OPENCV4_SITE =?$(call?github,opencv,opencv,$(OPENCV4_VERSION))OPENCV4_INSTALL_STAGING = YESOPENCV4_LICENSE = Apache-2.0OPENCV4_LICENSE_FILES = LICENSEOPENCV4_CPE_ID_VENDOR = opencvOPENCV4_CPE_ID_PRODUCT = opencvOPENCV4_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

      修改完成后,執(zhí)行編譯Buildroot 的命令,會自動下載OpenCV4.10.0 的壓縮包以下目錄下。

      ELF2-linux-source/buildroot/output/elf2_fs/build/

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

      ?

      以下目錄會有一個include目錄和一個lib目錄,編譯出的OpenCV庫頭文件與庫文件就放在這兩個目錄里。

      ELF2-linux-source/buildroot/output/elf2_fs/host/aarch64-buildroot-linux-gnu/sysroot/usr/

      ?

      場景3:添加OpenCV第三方庫contrib

      OpenCV在視覺算法中的功能非常強大,其中一個原因就是該算法庫一直在與時俱進的更新最新的算法,對于具有專利的算法(如SURF)以及一些還沒有穩(wěn)定的算法,OpenCV會將其置于擴展模塊中,這些擴展模塊包含在opencv_contrib代碼庫中。

      對于該第三方庫,選擇手動編譯,不使用buildroot構(gòu)建。

      ?

      1、需要先確認以下路徑下安裝有OpenCV4 的文件夾

      OpenCV4,ELF2-linux-source/buildroot/output/elf2_fs/build/

      ?

      ?

      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-get?install cmake?

      ?

      由于沒有Buildroot幫我們配置交叉編譯器。所以需要我們自行配置。

      到以下路徑下,修改aarch64-gnu.toolchain.cmake文件。將GNU_MACHINE的路徑替換成Buildroot 系統(tǒng)里自帶的交叉編譯器的路徑+前綴。

      ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/platforms/linux/

      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、進入到以下目錄, 創(chuàng)建一個名為build和add_contrib_install的文件夾,然后進入build,通過如下命令,編譯OpenCV4.10.0及contrib第三方庫

      ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/

      ?

      elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0$?mkdir buildelf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0$?mkdir add_contrib_installelf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0$?cd buildelf@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進行編譯

      執(zhí)行nproc,查看虛擬機有幾個核。返回值為4,所以執(zhí)行make -j4。

      elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/build$?nproc4elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/build$?make -j4

      ?

      6、執(zhí)行make install

      生成的bin和lib 將被install到CMAKE_INSTALL_PREFIX宏指定的../add_contrib_install目錄中。

      ?

      將add_contrib_install 目錄中 的lib和include 目錄下的文件復(fù)制到開發(fā)板上。

      elf@ubuntu:~/work/ELF2-linux-source/buildroot/output/elf2_fs/build/opencv4-4.10.0/build$?make install?

      ?

      其它推薦:

      推薦閱讀:

      /* 53客服*/ /* 百度統(tǒng)計*/ /* 百度站長*/
      <ul id="gu0q4"></ul>
    • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
      <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      • <samp id="gu0q4"></samp>