在windows上交叉編譯opencv供RK3588使用

環境

NDK r27、RK3588 安卓板子、Android 12

步驟操作要點
1. NDK 下載選擇 r27 版本,解壓到無空格路徑(如?C:/ndk
2. 環境變量配置添加?ANDROID_NDK_ROOT?和工具鏈路徑到系統 PATH
3. CMake 參數調整指定?ANDROID_NATIVE_API_LEVEL=31ANDROID_ABI=aarch64-linux-android
4. 生成與編譯使用 Ninja 生成器,執行?cmake --build build --parallel 8
5. 驗證與部署檢查庫文件架構,通過 adb 部署到設備并測試

完整命令執行步驟

1.打開 cmd.exe 并切換到合適目錄

mkdir F:/opencv_build
cd F:/opencv_build

2.?輸入并執行 CMake 配置命令

cmake -S F:/opencv3.4.1/opencv-3.4.1 -B build ^-DANDROID_NDK="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973" ^-DCMAKE_INSTALL_PREFIX="F:/opencv3.4.1/opencv_install" ^-DCMAKE_TOOLCHAIN_FILE="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" ^-DANDROID_ABI="arm64-v8a" ^-DANDROID_NATIVE_API_LEVEL=31 ^-DCMAKE_TOOLCHAIN_NAME="aarch64-linux-android-clang" ^-G "Ninja" ^-DCMAKE_MAKE_PROGRAM="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/cmake/3.22.1/bin/ninja.exe" ^-DCMAKE_CXX_STANDARD=14 ^-DCMAKE_CXX_STANDARD_REQUIRED=ON ^-DCMAKE_POLICY_DEFAULT_CMP0057=NEW ^ -Wno-dev 

1. -S F:/opencv3.4.1/opencv-3.4.1
作用:指定 OpenCV 源代碼的根目錄路徑。
含義:-S 表示 Source directory(源代碼目錄),即 OpenCV 的源代碼存放位置。
2. -B build
作用:指定構建輸出目錄。
含義:-B 表示 Build directory(構建目錄),生成的中間文件和編譯結果將存放在此目錄。這里設置為當前目錄下的 build 文件夾。
3. -DANDROID_NDK="..."
作用:指定 Android NDK 的路徑。
含義:-D 用于設置 CMake 變量,此處將 ANDROID_NDK 變量指向你安裝的 NDK 路徑。
確保路徑正確,且 NDK 版本(27.0.12077973)與 OpenCV 兼容(OpenCV 3.4.1 可能支持較舊的 NDK,需注意兼容性)。
4. -DCMAKE_INSTALL_PREFIX="..."
作用:指定編譯完成后安裝 OpenCV 庫的路徑。
含義:編譯成功后,OpenCV 的頭文件、庫文件等將安裝到 F:/opencv3.4.1/opencv_install 目錄。
5. -DCMAKE_TOOLCHAIN_FILE="..."
作用:指定 Android 的交叉編譯工具鏈配置文件。
含義:android.toolchain.cmake 是 NDK 提供的腳本,用于配置 Android 的編譯環境(如架構、API 級別等)。
必須與 NDK 版本一致,此處路徑正確。
6. -DANDROID_ABI="arm64-v8a"
作用:指定目標架構為 ARM64-v8a(64 位 ARM 設備)。
含義:確保編譯的庫適用于 64 位 Android 設備。其他常見架構包括 armeabi-v7a(32 位)、x86 等。
7. -DANDROID_NATIVE_API_LEVEL=31
作用:設置目標 Android API 級別。
含義:31 對應 Android 12。需確保你的設備或目標 SDK 版本兼容此 API 級別。
8. -DCMAKE_TOOLCHAIN_NAME="aarch64-linux-android-clang"
作用:指定編譯工具鏈名稱(可能冗余)。
含義:
aarch64-linux-android-clang 表示使用 Clang 編譯器為 ARM64 架構交叉編譯。
注意:-DCMAKE_TOOLCHAIN_FILE 已指定工具鏈文件,此參數可能被覆蓋,可嘗試刪除以避免沖突。
9. -G "Ninja"
作用:指定構建系統生成器為 Ninja。
含義:Ninja 是一個快速的構建工具,比默認的 Make 更高效。
10. -DCMAKE_MAKE_PROGRAM="..."
作用:指定 Ninja 的可執行文件路徑。
含義:確保 CMake 使用你指定的 Ninja 版本(路徑需正確)。
11. -DCMAKE_POLICY_DEFAULT_CMP0057=NEW
作用:設置 CMake 策略以解決路徑兼容性問題。
含義:
CMP0057 與路徑處理相關,設置為 NEW 可避免某些舊版本路徑問題。
通常在較新版本的 CMake 中默認已啟用,但顯式設置可確保兼容性。

3.?執行編譯與安裝

cd build
ninja -j 8
ninja install

編譯后,生成包含?libopencv_*.so?文件(如?libopencv_core.solibopencv_imgproc.so?等),將其復制到

app/src/main/jniLibs/arm64-v8a/

下集成應用。

但一開始未啟用動態庫構建:在 CMake 中,BUILD_SHARED_LIBS?選項控制生成動態庫(.so)還是靜態庫(.a)。若未將其設置為?ON,默認可能生成靜態庫。OpenCV 的 CMake 配置會遵循此選項,若未顯式開啟動態庫構建,最終產物就是一系列?.a?文件。

于是刪除build文件夾,重新進行構建就可以了。

cmake -S F:/opencv3.4.1/opencv-3.4.1 -B build ^-DANDROID_NDK="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973" ^-DCMAKE_INSTALL_PREFIX="F:/opencv3.4.1/opencv_install" ^-DCMAKE_TOOLCHAIN_FILE="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/ndk/27.0.12077973/build/cmake/android.toolchain.cmake" ^-DANDROID_ABI="arm64-v8a" ^-DANDROID_NATIVE_API_LEVEL=31 ^-DCMAKE_TOOLCHAIN_NAME="aarch64-linux-android-clang" ^-G "Ninja" ^-DCMAKE_MAKE_PROGRAM="C:/Users/wanyao.zhang/AppData/Local/Android/Sdk/cmake/3.22.1/bin/ninja.exe" ^-DCMAKE_CXX_STANDARD=14 ^-DCMAKE_CXX_STANDARD_REQUIRED=ON ^-DCMAKE_POLICY_DEFAULT_CMP0057=NEW ^-DBUILD_SHARED_LIBS=ON

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902002.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902002.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902002.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

淺析MySQL事務鎖

在 MySQL 中,事務鎖是用于確保數據一致性和并發控制的重要機制。事務鎖可以幫助防止多個事務同時修改同一數據,從而避免數據不一致和臟讀、不可重復讀、幻讀等問題。 以下是 MySQL 事務鎖的關鍵點總結: 事務鎖:用于確保數據一致性和并發控制。鎖的類型: 行級鎖:InnoDB,粒…

vue3 文件下載(excel/rar/zip)

安裝axios npm install axios 在項目中引入 import axios from axios; 1、get接口excel文件下載 const file_key ref() const downLoadExcel (value:any) > {//file_key.value value axios({method: "get",url: "/api/da/download_excel/",//url:…

RT-Thread RTThread studio 初使用

RT-Thread Studio 下載 https://www.rt-thread.org/studio.html 安裝使用 https://bbs.elecfans.com/jishu_2425653_1_1.html 4 編譯問題解決 問題一:error: unknown type name clock_t 具體的類型值是在sys/_types.h中定義的,需要包含sys/_types.h 這個…

漢諾塔專題:P1760 通天之漢諾塔 題解 + Problem D: 漢諾塔 題解

1. P1760 通天之漢諾塔 題解 題目背景 直達通天路小A歷險記第四篇 題目描述 在你的幫助下,小 A 成功收集到了寶貴的數據,他終于來到了傳說中連接通天路的通天山。但是這距離通天路仍然有一段距離,但是小 A 突然發現他沒有地圖&#xff0…

探索 HumanoidBench:類人機器人學習的新平臺

在科技飛速發展的當下,類人機器人逐漸走進我們的視野,它們有著和人類相似的外形,看起來能像人類一樣在各種環境里完成復雜任務,潛力巨大。但實際上,讓類人機器人真正發揮出實力,還面臨著重重挑戰。 這篇文…

數據結構中的寶藏秘籍之廣義表

廣義表,也被稱作列表(Lists),是一種遞歸的數據結構。它就像一個神秘的盒子,既可以裝著單個元素(原子),也可以嵌套著其他的盒子(子列表)。比如廣義表 (a (b c)…

【jenkins】首次配置jenkins

第一步,輸入管理員密碼 cat /var/jenkins_home/secrets/initialAdminPassword第二步,點擊安裝推薦的插件 第三步,創建管理員用戶 第四步,返回實例 第五步, 升級jenkins 第六步, 修復提示 第七步&#xff0c…

Android studio—socketIO庫return與emit的使用

文章目錄 一、Socket.IO庫簡單使用說明1. 后端 Flask Flask-SocketIO2. Android 客戶端集成 Socket.IO3. 布局文件注意事項 二、接受服務器消息的二種方法1. 客戶端接收通過 emit 發送的消息功能使用場景后端代碼(Flask-SocketIO)客戶端代碼&#xff08…

用Prompt 技術【提示詞】打造自己的大語言智能體

機器如何按照人類的指令執行任務的探索 機器需具備理解任務敘述的能力,以便能夠按照人類的指令執行任務,為機器提供一些范例作為參考,使其能夠理解該執行的任務類型。這樣的學習方式稱為“Instruction learning”,透過精心設計的…

Node.js 數據庫 事務 項目示例

1、參考:JavaScript語言的事務管理_js 函數 事務性-CSDN博客 或者百度搜索:Nodejs控制事務, 2、實踐 2.1、對于MySQL或MariaDB,你可以使用mysql或mysql2庫,并結合Promise或async/await語法來控制事務。 使用 mysql2…

【Mamba】MambaVision論文閱讀

文章目錄 MambaVision一、研究背景(一)Transformer vs Mamba?(二)Mamba in CV? 二、相關工作?(一)Transformer 在計算機視覺領域的進展?(二)Mamba 在計算機視覺領域的探索? 三、…

前端面試寶典---原型鏈

引言----感謝大佬的講解 大佬鏈接 原型鏈示意圖 原型鏈問題中需要記住一句話:一切變量和函數都可以并且只能通過__proto__去找它所在原型鏈上的屬性與方法 原型鏈需要注意的點 看上圖可以發現 函數(構造函數)也可以通過__proto__去找到原…

C語言---FILE結構體

一、FILE 結構體的本質與定義 基本概念 FILE 是 C 語言標準庫中用于封裝文件操作的結構體類型&#xff0c;定義于 <stdio.h> 中。它代表一個“文件流”&#xff0c;可以是磁盤文件、標準輸入輸出&#xff08;stdin/stdout/stderr&#xff09;或其他輸入輸出設備。 實現特…

基于大模型的直腸息肉診療全流程風險預測與方案優化研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與創新點 二、大模型技術概述 2.1 大模型原理簡介 2.2 大模型在醫療領域應用現狀 三、直腸息肉術前預測與準備 3.1 基于大模型的術前風險預測 3.1.1 息肉性質預測 3.1.2 手術難度預測 3.2 基于預測結果的術前準備 3.…

華為OD機試真題——MELON的難題(2025A卷:200分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

2025 A卷 200分 題型 本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析&#xff1b; 并提供Java、python、JavaScript、C、C語言、GO六種語言的最佳實現方式&#xff01; 2025華為OD真題目錄全流程解析/備考攻略/經驗分享 華為OD機試真題《MELON的…

AI數據分析與BI可視化結合:解鎖企業決策新境界

大家好&#xff0c;今天我們來聊聊一個前沿而熱門的話題——AI數據分析與BI可視化結合&#xff0c;如何攜手推動企業決策邁向新高度。在數據爆炸的時代&#xff0c;企業如何高效利用這些數據&#xff0c;成為制勝的關鍵。AI數據分析與BI可視化的結合&#xff0c;正是解鎖這一潛…

克服儲能領域的數據處理瓶頸及AI拓展

對于儲能研究人員來說&#xff0c;日常工作中經常圍繞著一項核心但有時令人沮喪的任務&#xff1a;處理實驗數據。從電池循環儀的嗡嗡聲到包含電壓和電流讀數的大量電子表格&#xff0c;研究人員的大量時間都花在了提取有意義的見解上。長期以來&#xff0c;該領域一直受到對專…

【SpringBoot+Vue自學筆記】002 SpringBoot快速上手

跟著這位老師學習的&#xff1a;https://www.bilibili.com/video/BV1nV4y1s7ZN?vd_sourceaf46ae3e8740f44ad87ced5536fc1a45 最好和老師的idea版本完全一致&#xff01;截至本文寫的當日最新的idea好像默認jdk17&#xff0c;配置時遇到很多bug。 &#x1f33f; Spring Boot&a…

SpringAI+DeepSeek大模型應用開發——2 大模型應用開發架構

目錄 2.大模型開發 2.1 模型部署 2.1.1 云服務-開放大模型API 2.1.2 本地部署 搜索模型 運行大模型 2.2 調用大模型 接口說明 提示詞角色 ?編輯 會話記憶問題 2.3 大模型應用開發架構 2.3.1 技術架構 純Prompt模式 FunctionCalling RAG檢索增強 Fine-tuning …

藍橋杯12. 日期問題

日期問題 原題目鏈接 題目描述 小明正在整理一批歷史文獻。這些歷史文獻中出現了很多日期。 小明知道這些日期都在 1960 年 1 月 1 日 至 2059 年 12 月 31 日 之間。 令小明頭疼的是&#xff0c;這些日期采用的格式非常不統一&#xff1a; 有的采用 年/月/日有的采用 月…