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版本
http://opencv.org/downloads.html
- 解壓
- 導入相關包
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);