Ubuntu 上編譯opencv_contrib模塊for Android


 

https://blog.csdn.net/ipfpm/article/details/81132144

【ubuntu】Ubuntu中Android SDK下載跟配置 android24的版本

 

(1)  安裝ADNORID SDk環境

 https://developer.android.com/studio

1.1 安裝JAVA環境

https://cloud.tencent.com/developer/article/1162527

https://www.howtoing.com/how-to-install-java-with-apt-on-ubuntu-18-04

OpenJDK 8

Java 8是目前的長期支持版本,雖然公共維護在2019年1月結束,但仍然得到廣泛支持。要安裝OpenJDK 8,請執行以下命令:

sudo apt install openjdk-8-jdk

驗證這是與安裝

java -version

也可以只安裝JRE,你可以通過執行sudo apt install openjdk-8-jre 。

OpenJDK 10/11

Ubuntu的存儲庫包含一個安裝Java 10或11的軟件包。在2018年9月之前,該軟件包將安裝OpenJDK 10.一旦Java 11發布,該軟件包將安裝Java 11。

要安裝OpenJDK 10/11,請執行以下命令:

sudo apt install openjdk-11-jdk

要僅安裝JRE,請使用以下命令:

sudo apt install openjdk-11-jre

接下來,讓我們看看如何安裝Oracle的官方JDK和JRE。

 

1.2 配置JAVA_HOME

設置JAVA_HOME環境變量

許多使用Java編寫的程序使用JAVA_HOME環境變量來確定Java安裝位置。

要設置此環境變量,請首先確定Java的安裝位置。使用update-alternatives命令:

$ sudo update-alternatives --config java

此命令顯示Java的每個安裝及其安裝路徑:

There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode 3 /usr/lib/jvm/java-8-oracle/jre/bin/java 1081 manual mode Press <enter> to keep the current choice[*], or type selection number:

在這種情況下,安裝路徑如下:

  1. OpenJDK 11位於 /usr/lib/jvm/java-11-openjdk-amd64/bin/java.
  2. OpenJDK 8位於/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
  3. Oracle Java 8位於/usr/lib/jvm/java-8-oracle/jre/bin/java

從您想要的安裝中復制路徑。然后使用nano或您喜歡的文本編輯器打開/etc/environment

$ sudo nano /etc/environment

在此文件的末尾,添加以下行,確保使用您自己復制的路徑替換突出顯示的路徑:

/etc/environment

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/bin/java"

修改此文件將為系統上的所有用戶設置JAVA_HOME路徑。

保存文件並退出編輯器。

現在重新加載此文件:

$ source /etc/environment

驗證是否已設置環境變量:

$ echo $JAVA_HOME

您將看到剛剛設置的路徑:

/usr/lib/jvm/java-11-openjdk-amd64/bin/java

其他用戶需要執行命令source /etc/environment或注銷並重新登錄才能應用此設置。

 

1.3 下載

https://blog.csdn.net/opengl_es/article/details/80184519

解壓后,出現 tools 目錄,將其放入一個空的 SDK 待安裝目錄下,開始安裝。

二、列出可安裝組件包

使用快捷鍵 CTRL + ALT + T 打開 Console 控制端,進入上面解壓出來的 tools 目錄下的 bin 目錄,找到 sdkmanager ,

執行如下命令

./sdkmanager --list ( ../android list sdk  已過時)

三、安裝組件包

接下來,選擇上面的 PATH 列內容進行安裝,命令如下:

$ ./sdkmanager "system-images;android-27;google_apis;x86" 

./sdkmanager  "雙引號中是上面的path"

 

 

./sdkmanager "build-tools;28.0.0"
./sdkmanager "ndk-bundle"
./sdkmanager "ndk;20.0.5594570"
./sdkmanager "platforms;android-28"
./sdkmanager "sources;android-28"
./sdkmanager "system-images;android-28;google_apis;x86_64"

 

2 編譯opencv以及opencv_contrib

https://www.cnblogs.com/klchang/p/7563494.html

 

本文以編譯opencv 3.3.0 和 opencv_contrib 3.3.0為例,系統為 Linux x64 (Fedora 21),具體步驟如下:

1. 下載 Source code zip 壓縮包

從下面網址,選擇 opencv 3.3.0 Source code 下載 
https://github.com/opencv/opencv/releases

從下面網址,選擇下載與 opencv 3.3.0 對應的 opencv_contrib 3.3.0 
https://github.com/opencv/opencv_contrib/releases

注意:opencvopencv_contrib 版本必須保持一致,否則可能會出現編譯錯誤。

 

2. 下載 build-opencv-for-android 開源代碼

$ cd /mnt/work
$ git clone https://github.com/tzutalin/build-opencv-for-android.git
$ cd build-opencv-for-android

 

3. 解壓源碼包並重命名

opencv-3.3.0.zip 和 opencv_contrib-3.3.0.zip 都解壓到下載的build-opencv-for-android 開源代碼 所在目錄 /mnt/work/build-opencv-for-android 

$ unzip opencv-3.3.0.zip -d /mnt/work/build-opencv-for-android
$ unzip opencv_contrib-3.3.0.zip -d /mnt/work/build-opencv-for-android
$ cd /mnt/work/build-opencv-for-android
$ mv opencv-3.3.0 opencv
$ mv opencv_contrib-3.3.0 opencv_contrib

 

4. 修改 build-opencv-for-android 開源代碼中 build-android-opencv.sh

修改內容如下:

修改 第 行代碼:

declare -a ANDROID_ABI_LIST=("x86" "x86_64" "armeabi" "arm64-v8a" "armeabi-v7a" "mips" "mips64")

declare -a ANDROID_ABI_LIST=("armeabi-v7a")

 

3 錯誤

opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:653:20: fatal error: 'boostdesc_bgm.i' file not found

下載這些文件

xfeatures2d/boostdesc: Download failed: 7;"Couldn't connect to server"

下載 對應的文件

放到

build-opencv-for-android\opencv_contrib\modules\xfeatures2d\cmake

build-opencv-for-android\opencv_contrib\modules\xfeatures2d\src

 

 

5. 執行腳本 build-android-opencv.sh

 

$ ./build-android-opencv.sh /mnt/work/android/android-sdk-linux/ndk-bundle

 

注:build-android-opencv.sh腳本的通用的執行命令格式為“./build-android-opencv.sh [NDK_ROOT]”,其中,參數NDK_ROOT是可選的,表示Android Native Development Kit (NDK) 頂層目錄,如果沒有提供,則會試圖尋找環境變量 ANDROID_NDK

 

 

 

 

 

6 在Android中使用

在mk文件中加入

# OpenCV
OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=STATIC
#include D:/project\Android\OpenCV-2.4.10-android-sdk\sdk\native\jni\OpenCV.mk
#include /software/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk #without opencv_contrib
include /software/build-opencv-for-android/android_opencv/opencv/sdk/native/jni/OpenCV.mk #with opencv_contrib

 

7 問題2

terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(3.4.3-dev) /home/zhourui/Software/opencv_contrib/modules/xfeatures2d/src/sift.cpp:1205: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'create'

https://zhuanlan.zhihu.com/p/48854990

 cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules -DOPENCV_ENABLE_NONFREE=ON

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM