Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> OpenCV學習筆記(四)—— 移植到Android平台

OpenCV學習筆記(四)—— 移植到Android平台

編輯:關於Android編程

如今,大部分的AR都是基於移動設備的,所以這裡我們嘗試在Android中調用OpenCV的功能來做一些相關的測試。由於OpenCV是基於C語言和部分C++語言開發的,而Android開發使用的則是Java,那麼如何才能在Java中調用OpenCV庫中的類或者代碼呢?這就需要借助於JNI了,不過在使用JNI之前,我們首先要先配置好開發環境。

 

一、工具:

1.Eclipse:包含JDK、SDK、IDE、CDT、NDK和ADT插件,也就是在android軟件開發環境配置完成之後再加上NDK和CDT插件,在這裡我只簡單說一下NDK的配置過程:

下載NDK安裝包,這裡我是在雲盤下載的,因為官方鏈接非常不穩定,我使用的是ndk-r9的版本:

\

解壓壓縮包到指定目錄下面,然後打開eclipse編輯器,工具欄中Window—>Preferences:

\

注意NDK的路徑不能包含空格!!!

2.OpenCV for Android插件包:到OpenCV的官方網站(http://opencv.org/)下載android專用版的OpenCV資源包

\下載之後得到壓縮包:\,加壓壓縮包並得到SDK文件:

\

這些目錄分別存放的文件:

apk:使用了opencv庫的android程序管理包,這個需要按照你手機的實際芯片情況來選擇相應版本手工安裝,除非你可以連接上google play自動安裝;

samples:一些簡單的案例apk及其工程源碼

sdk:最為關鍵的目錄,包含OpenCV android開發用到的API和庫文件。

 

二、安裝配置:

1.將OpenCV庫導入Eclipse中:Eclipse中選擇工具欄中的:File —>Import...,然後選擇General—>Existing Projects into Workspace:

\ \

選擇剛剛解壓出來的OpenCV SDK的根目錄,然後導入其中的一個工程:

\

\

導入的過程中Eclipse就會對導入的項目進行編譯,導入成功之後發現一片飄紅,那麼接下來我們就開始慢慢解決這些錯誤指導能夠成功編譯為止。

 

2.OpenCV Library -3.1.0是其他所有demo的依賴庫文件,所以我們優先解決它的問題然後再導入demo進行測試。從錯誤列表中我們可以看出大部分的錯誤都是“XXX cannot be revoled to a type”,這個錯誤其實就是引用了一些未定義的類,考慮到我們還未引入其他第三方的類庫,所以導致這個問題的原因只可能是引用android內部類庫所引起的,那麼顯而易見的可以定位到應該是android API版本不匹配的問題。

選中工程,右鍵選擇Properties(屬性),打開屬性頁面:

\

選擇Android頁簽,在此處切換工程依賴的Android API版本,進過查詢可以定位缺少的API是Android 5.0中新增的,所以我們只要選擇5.0或者5.0以上的API版本,即可解決問題:

\

 

3.解決完上述問題之後,我們可以用相同的辦法導入一個demo工程,這裡我們也可以將全部demo工程一並導入到Eclipse中:

\\

又紅了是不是?不要慌,查看錯誤列表發現錯誤都是引用未定義類導致的,這其實是因為每個demo都會引用OpenCV Library -3.1.0庫文件,但是此時庫文件的路徑發生了變化,所以才出現了無法正常引入庫文件導致的錯誤,解決方法很簡單,只需要為每個工程重新定位庫文件路徑到當前庫文件路徑即可:

\

刪除無效的引用,點擊Add重新添加庫工程引用:

\\

 

4.對所有的demo工程進行上述設置之後,發現錯誤欄的錯誤剩下兩個:

\

這個錯誤導致的原因是編譯的時候無法找到ndk工具,此時我們需要在屬性面板中修改C/C++ Build的一些配置信息,取消使用默認的command:

\

展開目錄選中Environment選項,在其中Add多一個路徑參數NDKROOT,參數值為NDK的根路徑:

\

5.完成上述操作之後,選擇工程右鍵“clean project”重新編譯一次工程,發現錯誤變成了:

\

這是因為編譯的時候找不到OpenCV SDK中的工具OpenCV.mk所導致的,也就是OpenCV SDK的匹配路徑不正確或者是沒有匹配,打開當前工程的jni文件夾下的Android.mk文件,這是C/C++編譯時使用的配置文件,我們可以看到OpenCV.mk的路徑必須為OPENCV_ANDROID_SDK目錄下面,或者是與當前工程文件在同一目錄下:

\

所以解決這個問題的方法是:在C/C++ Build的Environment頁簽再添加一個OPENCV_ANDROID_SDK路徑配置常量:

\

 

三、案例運行:

完成以上所有配置之後,工程錯誤全部解決,那麼接下來我們需要看看demo是否能正常運行起來,設備連接PC,然後選擇工程右鍵“Run As”然後選中“Android Application”:

\

出現此提示的原因是OpenCV 2.4.3之後,apk正常運行必須依賴於OpenCV Manager.apk,找到OpenCV android sdk目錄下面的apk目錄:

\

這裡適用於很多Android硬件設備,這裡我選擇安裝的是armeabi-v7a這個版本的,順利安裝完OpenCV Manager之後,再次重啟剛剛的demo,可以正常運行並看到結果如下:

\

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved