OpenCV4Android 之 OpenCV4Android SDK

本篇是 OpenCV4Android 三篇系列之二 —— OpenCV4Android SDK

教程旨在帮助大家安装和配置OpenCV4Android SDK。

这篇指南以Windows 7配置为基础,但是它也同样适用于GUN linux 和 Apple Mac系统。

教程假定你已经安装和配置了如下的软件:

  • JDK
  • Android SDK and NDK
  • Eclipse IDE
  • ADT and CDT plugins for Eclipse

如果你需要任何以上的帮助,可以参考我的译文Android 开发简介,或者访问官方文档教程Introduction into Android Development

如果你在下面的步骤中不幸的遇到了问题,请通过OpenCV4Android 讨论组或者OpenCV 的Q&A forum联系我们,我们将尽我们最大努力帮你解决问题。

Tegra Android 开发包用户

你可能使用了由 NVIDIA 发布的Tegra Android Development Pack (TADP)Android开发包,除了Android开发工具外,TADP 2.0 还包括了OpenCV4Android SDK,所以它已经安装在你的系统上了,你完全可以忽略教程的运行OpenCV样例部分。

更多的关于TADP的细节请移步Introduction into Android Development

 

概述

OpenCV4Android SDK包能够让Android应用程序访问OpenCV库。

库的结构如下:

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 文件夹包含 Android 的 OpenCV API 和库:
  • sdk/java 文件夹包含了一个 Android 的 Eclipse 工程库,该库通过 import 到用户的工作空间来提供了Java API接口。
  • sdk/native 文件夹包含了 OpenCV C++ 头文件(为了JNI代码)和 Android 库(*.so 和 *.a) 为不同的 CPU 体系结构,如:ARM-v5, ARM-v7a 和x86 。
  • sdk/etc 文件夹包含了 Haar 和 LBP 级联分类器。
  • apk 文件夹包含了Android 的发布包,它应该被安装在目标Android 设备上以保证能够通过OpenCV Manager API 来访问 OpenCV 库。

    当设备第一次使用 OpenCV Manager API 时,设备要求用户从Google Play Market上下载 Manager.apk 。没有网络或者在虚拟机上就需要手动的安装。详细访问:怎么选择合适版本的OpenCV Manager

  • samples 文件夹包含了一些样例应用程序工程和它们的构建包(APK)。Import 它们到 Eclipse 工作空间然后可以浏览代码从而学习怎样在 Android上使用 OpenCV。
  • doc 文件夹包含了不同的 OpenCV 文档,它们都是 PDF 格式的,同样可以访问官网。

自从OpenCV 2.4.3 开始,OpenCV4Android SDK 为库的初始化使用了OpenCV Manager API。OpenCV Manager一项 Android 服务,它为 OpenCV 应该程序的开发者提供了如下的好处:

  • 压缩了apk的大小,因为所有的程序使用相同的来自Manager二进制库,所以它们各自不需要存储libs 从而减少体积。
  • 软件特殊优化可以自动支持所有平台。
  • 可信的 OpenCV 库资源,OpenCV 的所有包都发布在 Google Play上;额外的关于OpenCV Manager 请访问:
  • Slides
  • Reference Manual

手动配置 OpenCV4Android SDK

获取 OpenCV4Android SDK

1. 访问OpenCV的下载页面 SourceForge然后下载最新的版本。

2. 为OpenCV开发新建文件夹,教程中,我们解压 OpenCV SDK 到 C:\Work\OpenCV4Android\ directory。

3. 解压SDK包到选择的目录中。

导入 OpenCV 库到和样例到 Eclipse

1. 打开Eclipse,选择工作空间位置

建议大家新建一个新的工作空间,然后开始操练 OpenCV for Android。如下图所示:

Choosing C:\Work\android-opencv\ as workspace location

 

2. 导入 OpenCV 库和样例程序到工作空间。

OpenCV 库已经被打包成了一个Android 库工程,以便被其它Android 程序调用。

SDK 中的每一个样例程序都已经引用了OpenCV 库。下面我们来把来把它们导入到工作空间吧。(注:OpenCV 样例程序依赖于 OpenCV 库工程,所以不要忘记把库导入到工作空间)

  • 右击窗口Package Explorer ,然后选择在内容菜单里选择Import...
Select Import... from context menu

 

  • 在主面板上选择 General ‣ Existing Projects into Workspace ,然后单击 Next 按钮。 
eclipse_6_import_existing_projects

 

  • Select root directory 定位你的 OpenCV 包文件夹。 Eclipse 能够在动的找到 OpenCV 库和样例程序。
  •  
Locate OpenCV library and samples

 

  • 点击 Finish 按钮就可以结束导入操作了。

点击按钮后,Eclipse 会加重所有选择的工程到工作空间,由于需要初始化来构建 OpenCV 样例,可能会消耗一段时间。

警告

当导入初始化后,在非Windows 操作系统上 (Linux and Mac OS)  Eclipse 将仍然会在本地 C++ 代码中显示构建错误。为了解决这个问题,请按下面的步骤操作:

打开Project Properties -> C/C++ Build, 然后把 "Build command" 文本区的内容替换为 "${NDKROOT}/ndk-build" (把末尾的.cmd去掉).

注意

有些情况下构建错误不会显示,可以尝试下面的操作:

  • 右击 OpenCV Library 项目-> Android Tools -> Fix Project Properties, 然后菜单 Project -> Clean... -> Clean all
  • 右击有错误的项目 -> Properties -> Android, 确保目标被选中且版本为 Android 3.0 或者更高。
  • Problems 试图窗口中检查错误,然后自己努力解决它。

eclipse_cdt_cfg4

 

一旦 Eclipse 完成了构建后你的工作空间将没有错误,如下:

eclipse_10_crystal_clean

 

运行 OpenCV 样例

此刻我们将要构建和运行样例,不过要时刻记住,face-detectionTutorial 2 – Mixed 包含了一写本地代码,因此需要 Android NDK 和 NDK/CDT 插件。如果你还没有安装这些工具的话,请访问相应的部分 Introduction into Android Development。或者访问我的译文 OpenCV4Android 之 Android 开发简介

警告:样例中可以通过 AVD (安卓虚拟设备)访问 Android Java Camera API, 但是使用了本地代码的样例通过虚拟设备可能会出问题。

注意:Recent Android SDK tools, revision 19+ can run ARM v7a OS images but they available not for all Android versions

好了,开始运行例子吧。非常简单滴。

  • 用adb 工具连接你的设备或者创建一个支持相机的虚拟机。
  • 选择你想运行的工程按 Ctrl + F11 运行或者在菜单中选择选项 Run ‣ Run,也可以按工具栏中的 Run 按钮。

注意:Android 虚拟机起动很慢,所以耐心点吧。或许可以喝杯咖啡。

  • 第一次运行 Eclipse 可能会询问你想运行的应用程序的类型:

eclipse_11_run_as

 

  • 选择 Android Application 选项 并按 OK 按钮。Eclipse 将会安装和运行程序。

起动是如果你没有安装 OpenCV Manager包的话,将会看到下面的提示信息。

android_emulator_opencv_manager_fail

为了解决这个问题,需要安装 OpenCV Manager 和 适当的OpenCV 包。不过你只需要单击 Yes 按钮,Manager 包将会从 Google Play 下载。

如果你访问不了谷歌市场的话,你也可以到 OpenCV4Android SDK  文件夹中手动安装。具体的请访问 How to select the proper version of OpenCV Manager 了解吧。

<Android SDK path>/platform-tools/adb install <OpenCV4Android SDK path>/apk/OpenCV_2.4.9_Manager_2.18_armv7a-neon.apk
  • 样例 Sample - image-manipulations运行结果如下:

emulator_canny

下一步该做什么? OpenCV4Android SDK

现在,你已经配置好了 OpenCV4Adroid SDK ,下面可以把 OpenCV 应用到自己的程序中去了。你将在 Android Development with OpenCV 部分学习到具体怎么去做。

posted @ 2014-12-26 20:40  Beenking  阅读(1382)  评论(0编辑  收藏  举报