android學習五---OpenCV for android環境搭建

     學習android的目的是想在手機上實現計算機視覺的算法。一般算法的研究都是在Matlab上進行,但是手機平臺沒有那麼多的計算資源,用matlab顯然是不太現實的。而OpenCV是基於C++語言編寫的,可用於開發實時的圖像處理、計算機視覺以及模式識別程序。

一:需要的工具

     在前面的章節中,我們已經搭建好android,現在我們需要android支持OpenCV,需要哪些工具呢?首先android是基於java開發的,而Opencv是基於C++,所以這兩者之間需要工具來相互支持。這一工具是android NDK,而我們需要把一些OpenCV庫編譯成.so動態庫(linux下的動態鏈接庫),需要Cygwin,而在eclipse下開發C++需要安裝CDT。另外最重要的是需要計算機視覺算法的一些API,這就需要安裝OpenCV4Android。

1.Android  NDK

1.1. 基本介紹

    Android NDK(Native Development Kit )是一套工具集合,允許你用像C/C++語言那樣實現應用程序的一部分。Google僅在極少數情況下建議使用NDK,有如下使用場景:

  • 必須提高性能(例如,對大量數據進行排序)。
  • 使用第三方庫。舉例說明:許多第三方庫由C/C++語言編寫,而Android應用程序需要使用現有的第三方庫,如Ffmpeg、OpenCV這樣的庫。

1.2 安裝

    下載地址:https://developer.android.com/tools/sdk/ndk/index.html 

    下載的版本是android-ndk-r10c-windows-x86_64.exe。

環境變量:將下載的文件解壓,比如我的目錄是D:\android-ndk-r10c,將這一目錄放在系統變量的Path裏頭。

測試:在cmd下輸入NDK-build,如果出現下面的界面表示安裝成功

image


2.Cygwin (可以不用安裝,官方教程上面不需要)

    用途:在windows上運行類Unix系統。

3.CDT

    一般安裝eclipse時都會安裝好CDT

4.OpenCV4Android

    下載地址:http://sourceforge.net/projects/opencvlibrary/files/opencv-android/

    教程:http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html#

    官方教程上的工具

  • JDK

  • Android SDK and NDK

  • Eclipse IDE

  • ADT and CDT plugins for Eclipse

二、OpenCV4Android

   下載完,解壓,

2.1 目錄結構如圖

OpenCV-2.4.9-android-sdk |_ apk | |_ OpenCV_2.4.9_binary_pack_armv7a.apk | |_ OpenCV_2.4.9_Manager_2.18_XXX.apk | |_ doc |_ samples |_ sdk | |_ etc | |_ java | |_ native | |_ 3rdparty | |_ jni | |_ libs | |_ armeabi | |_ armeabi-v7a | |_ x86 | |_ LICENSE |_ README.android

  • sdk folder: 針對andriod的OpenCV API和庫:

  • sdk/java folder: 一個包含 Android 庫 的Eclipse 項目,能夠 提供OpenCV java API,可以導入eclipse工作空間;

  • sdk/native folder: 包含 OpenCV C++ headers (for JNI code) 和 native Android libraries (*.so and *.a) 可用於 ARM-v5, ARM-v7a and x86 架構;

  • sdk/etc folder :contains Haar and LBP cascades distributed with OpenCV.

  • apk folder :包含用於各個手機架構的OpenCV Manager API,要在手機上跑OpenCV的程序必須安裝,這個API能夠使程序調用OpenCV庫.

  • samples :包括可安裝在手機上的一些android應用程序包括源碼,可導入Eclipse。

  • doc:不用說啦,就是OpenCV的幫助文檔了。

2.2 OpenCV Manager API

    基於android服務的解決方案,能夠提供爲OpenCV開發者提供各種好處包括使得開發的APK更加緊湊,因爲所有的應用都是使用相同的binaries,所以沒必要每個程序都保存一份等等。

2.3 導入OpenCV庫和例子到worksapce

    file import 選擇目錄,一定要選擇OpenCV-2.4.9-android-sdk 這個根目錄,或者加上sdk--java這個目錄。一定要記得導入OpenCV library,否則會出現OpenCV函數各種紅線。

image

image 

2.3 選擇C/C++的編譯器

    在這些samples中,有些是基於OpenCV java API如image-manipulations,OpenCV C++ API如face-detection。選擇face-detection,選擇project-properties,C/C++ Build ,首先設置Environment,NDKROOT,value爲NDK解壓的目錄,然後設置Build command爲${NDKROOT}/ndk-build.cmd .

image

image

2.4 運行OpenCV例子

1.在手機上運行

    選擇合適的OpenCV Manager,插上手機,在cmd上輸入命令adb shell getprop ro.product.cpu.abi,就可以看到手機的架構瞭如圖

在手機上裝好OpenCV Manager和OpenCV binary pack(在apk目錄下可以找到)。然後像之前一樣運行,就可以在手機上看到效果了。

2.在模擬器上運行

   開好模擬器

   在cmd下使用命令adb install <OpenCV4Android SDK path>/apk/OpenCV_2.4.9_Manager_2.18_armv7a-neon.apk安裝OpenCV Manager。

    運行samples,由於沒有攝像頭,運行效果如圖。

emulator_canny

參考資料:http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html

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