日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 混合编译opencv与opencv_contrib的android版本

發布時間:2023/12/10 linux 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 混合编译opencv与opencv_contrib的android版本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?一、該方法只能編譯.a文件

使用該腳本:https://github.com/tzutalin/build-opencv-for-android

1 $ git clone https://github.com/tzutalin/build-opencv-for-android.git 2 $ cd build-opencv-for-android 3 $ ./setup.sh 3.3.1

而后配置android ndk的路徑

export ANDROID_NDK=./

而后運行腳本即可

./build-android-opencv.sh

?二、可同時編譯.a和.so

編譯環境準備

  • OpenCV 3.1.0源碼(假定目錄為<opencv-souce>)
  • OpenCV_contrib 3.1.0源碼(假定目錄為<opencv-contrib>)
  • cmake-gui 3.8.2 cmake的GUI工具
  • Mingw 編譯工具(假定目錄為<mingw-dir>)
  • Android NDK r12b 或者最新(假定目錄為<ndk-dir>)
  • Android SDK >=19(假定目錄為<sdk-dir>)
  • Android Studio
  • Java ANT 1.9.9(假定目錄為<ant-dir>)
  • 以上你是需要準備編譯的基礎環境,下面分別講解一下:
    1.OpenCV源碼

    1 2 3 cd <opencv-source>; git clone https://github.com/opencv/opencv.git git checkout -b "3.1.0" "3.1.0"

    ?

    2.OpenCV_contrib源碼

    1 2 3 cd <opencv-contrib>; git clone https://github.com/opencv/opencv-contrib.git git checkout -b "3.1.0" "3.1.0"

    ?

    PS> 注意我們看到這里我采用的是opencv和opencv_contrib的3.1.0版本,主要的原因是opencv3.0.0和
    3.2.0在實踐中會遇到各種莫名其妙的原因,很難進行下去(比如opencv3.2.0目前還很難用mingw編譯),這一塊的摸索花了我大量的時間,所以我建議你也統一使用3.1.0版本。

    3.cmake-gui工具
    去到cmake官網下載3.8.2版本的cmake-64位工具:https://cmake.org/files/v3.8/cmake-3.8.2-win64-x64.msi

    4.MinGW
    MinGW是Windows下的GCC編譯工具,去到Sourceforge下載MinGW的管理工具mingw-get-setup.exe。配置mingw的目錄為<mingw-dir>,并將<mingw-dir/bin>添加進系統變量。

    PS> 注意你可以選擇mingw32或者mingw64都是可以的。我后續采用的是mingw32。也就是安裝選項中的:

    5.Android NDK
    NDK的官方介紹是:

    Android NDK 是一套允許您使用原生代碼語言(例如 C 和 C++)實現部分應用的工具集。在開發某些類型應用時,這有助于您重復使用以這些語言編寫的代碼庫。

    你可以去下載最新64位穩定版本:android-ndk-r14b-windows-x86_64.zip

    當然由于歷史原因我選擇的是android-ndk-r12b-windows-x86_64.zip

    下載后解壓開即可。解壓目錄為<ndk-dir>。

    6&7. Android SDK和Android Studio就不必說了,注意SDK的版本安裝全一點,從API_LEVEL=19以上的都下了最好。其中SDK的目錄為<sdk-dir>。

    8.JAVA ANT 1.9.9
    在編譯OpenCV for JAVA起到關鍵作用。下載地址:http://apache.fayea.com//ant/binaries/apache-ant-1.9.9-bin.zip。 相應解壓目錄為<ant-dir>。

    編譯配置

  • 去到 <opencv-source> 中,創建<opencv-source>/platforms/android_arm
  • 雙擊打開”cmake-gui.exe”
  • 在”where is th source code”填入<opencv-source>目錄
  • 在”where to build the binaries”填入<opencv-source>/platforms/android_arm
  • 點擊”Add Entry”,添加”ANDROID_NDK”,并設定為”PATH”類目,對應目錄為<nkd-dir>,在我的電腦上就是”F:\Android\android-ndk-r10e”
  • 點擊”Add Entry”,添加”ANDROID_NDK_HOST_X64”,并設定為”BOOL”類目,點擊勾選。這是因為我們的NDK是64位版本的,如果你的NDK是32位的,則不需要勾選
  • 點擊”Add Entry”,添加”CMAKE_TOOLCHAIN_FILE”,并設定為”FILEPATH”類目,設置路徑為<opencv-source>/platforms/android/android.toolchain.cmake
  • 點擊”Add Entry”,添加”CMAKE_BUILD_WITH_INSTALL_RPATH”,并設定為”BOOL”類目,點擊勾選
  • 點擊”Add Entry”,添加”ANDROID_SDK”,并設定為”path”類目,設置路徑為<sdk-path>
  • 點擊”Add Entry”,添加”ANDROID_ABI”,并設定為”string”類目,設置值為armeabi-v7a。這里的選項也即你需要編譯的庫類型,如果你想要編譯armeabi或者X86都在這個值上修改。我們可以先編譯armeabi-v7a
  • 點擊”Add Entry”,添加”ANDROID_NATIVE_API_LEVEL”,并設定為”string”類目,設置值為19。這里的選項也即你需要編譯的API-LEVEL,我定的是19,你也可以用20或者21
  • 點擊”Configure”,選擇”MinGW Makefile”作為編譯選項,并在接下來的選項中選擇”Specify toolchain file for cross-compiling”,點擊”Next”,對應的路徑選擇<opencv-source>/platforms/android/android.toolchain.cmake,點擊”Finish”

  • 等待configure完成,如下圖所示:

    我們接著添加opencv-contrib模塊,搜索extra,在OPENCV_EXTRA_MODULES_PATH添加路徑<opencv-contrib>/modules

    Configuring done完成后我們還需要進行一些調整:

  • WITH_CUDA=OFF
  • WITH_MATLAB=OFF
  • BUILD_DOCS=OFF
  • BUILD_PERF_TESTS=OFF
  • BUILD_TESTS=OFF
  • WITH_TIFF=OFF
  • BUILD_opencv_bioinspired=OFF
  • BUILD_opencv_dnn=OFF(如果你用不到這個的話,建議你禁掉)
  • BUILD_opencv_structured_light=OFF(我當時添加這個模塊時出現了錯誤,建議你也禁掉)
  • BUILD_opencv_ximgproc=OFF(我當時添加這個模塊時出現了錯誤,建議你也禁掉)
  • BUILD_opencv_world:BOOL=OFF (不用嘗試編譯opencv_world了,從我的經驗來看是編譯不出來)
  • BUILD_opencv_contrib_world:BOOL=OFF (同上)
  • ANT_EXECUTABLE=<ant-dir>/bin/ant.bat

    上訴設定調整好后,再次點擊configure后再點擊generate,顯示:

    Configuring done
    Generating done

    執行編譯

    在上述編譯配置完成后,通過命令行工具進入<opencv-source>/platforms/android_arm目錄,執行

    1 mingw32-make -j4

    即可開始編譯

    ?

    遇到的問題:

    1、ndk和sdk需要選擇win64版本

    2、報選擇API錯誤,實際是讀取ndk中特定api-level中的include文件讀取不到,從其他版本的ndk中拷貝即可

    轉載于:https://www.cnblogs.com/zl1991/p/9285266.html

    總結

    以上是生活随笔為你收集整理的Linux 混合编译opencv与opencv_contrib的android版本的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。