編輯:關於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,可以正常運行並看到結果如下:
最流行的android組件大全http://www.open-open.com/lib/view/open1409108030307.htmlAndroid開源項目分類匯
下面請先看效果圖: 看上去是不很炫的樣子,它的實現上也不是很復雜,重點在與onDraw()方法的繪制。首先是我們的attrs文件:<?xml versio
使用Android Sutdio創建一個新的工程後,接下來記錄創建NDK工程的基本步驟。本文將達到:1. 創建NDK工程2. 在JNI中輸出Log語句3. 指定編譯的so
之前的一遍學習筆記主要就Android滑動沖突中,在不同方向的滑動所造成沖突進行了了解,這種沖突很容易理解,當然也很容易解決。今天,就同方向的滑動所造成的沖突進行一下了解