天天看點

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

基于adt bundle for windows-的androidopencv安裝文檔說明

任薛紀

說明:本文檔是基于快速搭建android開發平台adt bundle for windows軟體的androidopencv運作環境搭建,主要參考opencv官方文檔: ,如手動安裝eclipse、sdk、adt、cdt等android開發環境,請參考如上的官網文檔。官方文檔提供了兩種androidopencv的安裝方法。

下載下傳 (tadp)內建軟體包,運作tadp軟體包将會線上下載下傳所有的軟體包,然後自動安裝和配置運作環境(環境變量)。當安裝完後,打開eclipse軟體,然後按照如下兩步來分别導入opencv library和samples。注意,盡量按照兩步導入,否則可能會出現路徑找不到問題。

1、import->general->existing project into workspace->next->browse-> x:\android\opencv-2.4.3.2-android-sdk-tadp(androidopencv根目錄),僅選擇opencv library,不選擇copy projects into workspace.

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

2、import->general->existing project into workspace->next->browse-> x:\android\opencv-2.4.3.2-android-sdk-tadp(androidopencv根目錄),選擇除opencv library的所有samples,不選擇copy projects into workspace.

3、為每一個項目選擇android平台,選擇項目,點選屬性,定位android,從中選擇一個android平台。注意:對于opencv2.4.3,項目opencv library的最低平台為android 4.2(即api level 17),否則會提示編譯問題。sample的android平台可以低一些。

4、如果出現編譯問題,需要重複重新整理,清理和編譯。

1、jdk

2、adt bundle for windows,該內建軟體內建了eclipse、sdk、adt、cdt等軟體下載下傳位址:

androidopencv需要的軟體

1、android-ndk-r8d

2、opencv-2.4.3.2-android-sdk-tadp

1、解壓android-ndk-r8d和opencv-2.4.3.2-android-sdk-tadp

2、為ndk添加環境變量android_ndk_root=x:\android\android-ndk-r8d。(my computer -> properties -> advanced -> environment variables)

3、打開eclipse軟體,然後按照如下兩步(4和5兩步)來分别導入opencv library和samples。注意,盡量按照兩步導入,否則可能會出現路徑找不到問題。

4、import->general->existing project into workspace->next->browse-> x:\android\opencv-2.4.3.2-android-sdk-tadp(androidopencv根目錄),僅選擇opencv library,不選擇copy projects into workspace.

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

5、import->general->existing project into workspace->next->browse-> x:\android\opencv-2.4.3.2-android-sdk-tadp(androidopencv根目錄),選擇除opencv library的所有samples,不選擇copy projects into workspace.

6、為opencv library項目選擇android平台,選擇項目,點選屬性,定位android,從中選擇一個android平台。注意:對于opencv2.4.3,項目opencv library的最低平台為android 4.2(即api level 17),否則會提示編譯問題。

7、androidopencv提供兩種使用方法,一種為java opencv,另一種為native opencv。

7.1 對應java opencv,不使用ndk。隻要保證選擇android平台和opencv庫,就可以運作。

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

注意,如果opencv library編譯沒有正常編譯,則samples會出現感歎号“!”,由于沒有找到opencv的依賴庫opencv library-2.4.3.jar。

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

7.2 對應native opencv,首先應該保證7.1能夠正常通過,然後還需配置ndk,編譯c/c++語言。需要對c/c++ build的builder settings和behavior進行設定。

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明
基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

8、對jni的編輯,如果打開jni裡面的c/c++程式,将會提示很多錯誤,而且再也不能夠運作該項目了。如下圖

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

10、為了解決此問題,需要指明c/c++基本庫的位置和opencv的位置,如下圖所示,注意的是,可能ndk的環境變量的名稱不一樣,是以要根據環境變量的名稱來替換android_ndk_root,特别注意的是,opencv的路徑按照官方文檔來做可能不能夠作用,如果不行,直接按照計算機路徑添加opencv的路徑。

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

配置條目如下:

${android_ndk_root}/platforms/android-9/arch-arm/usr/include

${android_ndk_root}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include

${android_ndk_root}/sources/cxx-stl/gnu-libstdc++/4.6/include

d:\android\opencv-2.4.3.2-android-sdk-tadp\sdk\native\jni\include

11、要運作androidopencv還需要在手機裝置上安裝opencv_2.4.2_binary_pack_tegra3.apk和opencv_2.4.2_manager.apk

安裝如下:

adb install <path to tadp directory>

/opencv-2.4.2-tegra-sdk/apk/opencv_2.4.2_binary_pack_tegra3.apk

1、點選項目屬性->c/c++ build->builder settings->build command,使用ndk-build編譯時,加上如下參數ndk_debug=1,之後生成so檔案之外,還會生成gdbobserver,gdb.setup調式檔案,如下圖:

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

  2、在項目的debug configuration中選擇android native apllication,點選下方debug,如下圖:

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

1、建立一個名為testopencv的android項目,項目的位置和androidopencv在同一個盤符,否則這項目不能夠添加opencv library,如下圖所示:

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

2、将testopencv項目轉化為c/c++項目

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

3、繼續下一步,注意其中的後兩部,為的時候自己配置ndk編輯c/c++程式

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

4、建立jni檔案夾,将opencv tutorial 4 - mix java+native opencv裡面jni下面的檔案拷貝到建立的檔案夾中。

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

5、添加opencv library(如果建立的項目的盤符不在opencv所在的盤符,需要拷貝建立項目到androidopencv的盤符,否則不能夠添加opencv library)。

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

6、打開jni_part.cpp檔案,添加c/c++庫和opencv庫,消除編譯錯誤,如下圖,其中内容如下。需要注意的是,官方文檔有說明如下:

# for ndk r8 and prior:

${ndkroot}/platforms/android-9/arch-arm/usr/include

${ndkroot}/sources/cxx-stl/gnu-libstdc++/include

${ndkroot}/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include

${projdirpath}/../../sdk/native/jni/include

# for ndk r8b and later:

${ndkroot}/sources/cxx-stl/gnu-libstdc++/4.6/include

${ndkroot}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include

由于我的版本是r8d的,是以選擇第二種

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

7、修改jnicall導出函數,格式為:

jniexport void jnicall java_建立項目報名(“.”用”_”代替)_調用class名_findfeatures(jnienv*, jobject, jlong addrgray, jlong addrrgba);

如:jniexport void jnicall java_com_example_testopencv_mainactivity_findfeatures(jnienv*, jobject, jlong addrgray, jlong addrrgba);

8、将opencv tutorial 3 - add native opencv項目裡面的sample3native.java檔案内容拷貝到mainactivity.java,同時去掉錯誤。

9、修改system.loadlibrary("mixed_sample");

10、将opencv tutorial 3 - add native opencv項目裡面的tutorial3_surface_view.xml檔案複制到建立項目對應的layout檔案夾中

11、配置ndk,如下兩圖

基于adt bundle for windows-的AndroidOpenCV安裝文檔說明
基于adt bundle for windows-的AndroidOpenCV安裝文檔說明

13、修改android.mk檔案,修改引入opencv library的路徑

include ../sdk/native/jni/opencv.mk

14、修改androidmanifest.xml檔案,添加如下權限

 <uses-permission android:name="android.permission.camera"/>

    <uses-feature android:name="android.hardware.camera" android:required="false"/>

    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>

    <uses-feature android:name="android.hardware.camera.front" android:required="false"/>

<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>

15、注意android平台的版本,可能由于版本問題導緻不提示任何錯誤,但隻顯示錯誤。