OpenCV For Android
OpenCV之Android開發
本人第一次接觸OpenCV是在2014年11月份,當時因公司專案需要,開始學習OpenCV。當時記得公司要做一個識別類的專案,由於本人之前並沒有相關經驗,無從下手,因此那段時間煩擾了度娘和股溝不少。之後下載了一個相關的APP,好像是介紹物件的老大做的教育的專案,叫梯子網。只不過這媒婆感覺就適合做相親介紹物件的東西,所以過了不久,這個被給予厚望的網站,跪了。但是她做的專案確實不錯,可能是時間不對吧。默哀。。。
扯遠了,O(∩_∩)O哈哈~
話說當時下載了這個叫梯子打分的APP,然後用了一下還不錯,原理都是相通的,但是還是無處下手,因此突然想起了大學時候,老師傳授的一門絕世武功——反編譯。通過反編譯,看到了他的類庫libs包下的東西,什麼
libopencv_java.so
然後複製貼上,問度娘這是啥東東,度娘不負所托,然後就繼續找到了OpenCV,這就開始接觸了。
距離那個專案完成快兩年了,現在又要重新拾起,由於當時的學習資料都已丟失,不得不重新再來,又研究了一遍,發現以前不怎麼懂的東西,現在通過看原始碼,有點懂了,特此記錄一下,方便以後使用。
環境配置
本人當前系統為window7,所以會根據window7作業系統來進行環境配置
Android 開發環境配置
有關Android開發環境配置的一搜一大把,不懂的可以問度娘或者股溝啊
無非就包括以下三個方面的準備:
- JDK
JDK本人使用的是1.7版本,建議使用1.7,因為新的OpenCV sdk對於JDK有要求,環境配置就不說了
- NDK
NDK 安裝好之後,配置一下環境變數,因為NDK編譯需要
- IDE
IDE關於Android開發的主要有兩種:
- 第一個,就是Android Studio
Android studio 是Android官方推薦使用的IDE工具,功能更加適合Android開發者使用,而且Android官網以後不再提供Eclipse ADT外掛的更新,所以建議使用Android Studio來進行專案操作
- 第二個,是Eclipse
Eclispe的強大功能就不說了
本文將對於以上兩種IDE工具展開說明。
當以上環境配置好之後,現在就是OpenCV的使用了
OpenCV使用
- 首先,去OpenCV官網去下載的sdk
OpenCV下載地址,本人下載的是3.0版本
- 解壓
- 匯入相關包
Eclipse匯入
- 首先,匯入包
可以選擇一般工程匯入也可以選擇Android工程匯入,建議選擇一般工程匯入,因為這樣可以配置成自己的SDK版本,比較方便
- 其次,看到一些匯入錯誤
- 糾正錯誤
如下面圖的步驟
OK,通過這樣一步步的配置除了使用NDK的專案都可以運行了,NDK專案的配置,參見我的另一篇部落格
OpenCV 初始化機制
通過程式碼介紹一下,它的初始化機制
@Override
public void onResume()
{
super.onResume();
if (!OpenCVLoader.initDebug()) {
Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
} else {
Log.d(TAG, "OpenCV library found inside package. Using it!");
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
通過呼叫OpenCVLoader.initDebug()來進行初始化,如果初始化不成功就會呼叫
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
如果成功,就會呼叫回撥函式
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);