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版本

這裏寫圖片描述

http://opencv.org/downloads.html

  • 解壓
  • 導入相關包

Eclipse導入

  • 首先,導入包

可以選擇一般工程導入也可以選擇Android工程導入,建議選擇一般工程導入,因爲這樣可以配置成自己的SDK版本,比較方便

這裏寫圖片描述

這裏寫圖片描述

  • 其次,看到一些導入錯誤

這裏寫圖片描述

  • 糾正錯誤

如下面圖的步驟

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

OK,通過這樣一步步的配置除了使用NDK的項目都可以運行了,NDK項目的配置,參見我的另一篇博客

Android OpenCV 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);

OpenCV Manager加載機制

如何不使用OpenCV Manager

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章