上一个教程 : Android 开发入门
下一个教程 : 使用 OpenCV 进行 Android 开发
原作者 | Vsevolod Glumov |
---|---|
兼容性 | OpenCV >= 3.0 |
警告
本教程已过时。
本教程旨在帮助您安装和配置 OpenCV4Android SDK。
本教程是针对 MS Windows 7 编写的,但也适用于 GNU Linux 和 Apple Mac OS。
本教程假定您已安装和配置了以下软件:
- JDK
- Android SDK 和 NDK
- Eclipse IDE
- Eclipse 的 ADT 和 CDT 插件
如果您在上述任何方面需要帮助,请参阅我们的 **Android 开发入门**指南。
如果您在彻底执行这些步骤后遇到任何错误,请随时通过 OpenCV4Android 讨论组或 OpenCV Q&A 论坛联系我们。我们将尽力帮助您。
概况
OpenCV4Android SDK 软件包允许使用 OpenCV 库开发 Android 应用程序。
软件包内容结构如下
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
文件夹包含 OpenCV API 和 Android 库:sdk/java
文件夹包含一个 Android 库 Eclipse 项目,提供 OpenCV Java API,可导入到开发人员的工作区;sdk/native
文件夹包含用于 ARM-v5、ARM-v7a 和 x86 架构的 OpenCV C++ 头文件(用于 JNI 代码)和本地 Android 库(*.so 和 *.a);sdk/etc
文件夹包含与 OpenCV 一起发布的 Haar 和 LBP 级联。apk
文件夹包含应安装在目标安卓设备上的安卓软件包,以便通过 OpenCV Manager API 访问 OpenCV 库(详见下文)。
在可访问 Google Play Market(和互联网)的生产设备上,这些软件包将在首次启动使用 OpenCV Manager API 的应用程序时从 Market 安装。但没有市场或互联网连接的开发套件则需要手动安装这些软件包。如果需要,请安装 Manager.apk 和可选的 binary_pack.apk。有关详情,请参阅 “管理器选择
”。
注意事项
最好从互联网上安装,因为 OpenCV 团队可能会在市场上发布此软件包的更新版本。
samples
文件夹包含示例应用程序项目及其预编译包 (APK)。将它们导入 Eclipse 工作区(如下所述)并浏览代码,以了解在 Android 上使用 OpenCV 的可能方式。doc
文件夹包含各种 PDF 格式的 OpenCV 文档。也可从 http://docs.opencv.org 在线获取。
注意
最新的文档(夜间版本)在 http://docs.opencv.org/4.x。一般来说,它是最新的,但也可能涉及尚未发布的功能。待办事项:
我不确定这里是否是讨论 OpenCV 管理器的最佳场所
从 2.4.3 版开始,OpenCV4Android SDK 使用 OpenCV Manager API 进行库初始化。OpenCV Manager 是一种基于 Android 服务的解决方案,可为 OpenCV 应用程序开发人员带来以下好处:
- 压缩 apk 大小,因为所有应用程序都使用来自管理器的相同二进制文件,而不会在自身内部存储本地库;
- 在所有支持的平台上自动启用硬件特定优化;
- 自动更新和错误修复;
- 可信的 OpenCV 库源。所有包含 OpenCV 的软件包均在 Google Play 上发布;
手动设置 OpenCV4Android SDK
获取 OpenCV4Android SDK
- 访问 SourceForge 上的 OpenCV 下载页面,下载最新可用版本。本教程基于此软件包: OpenCV-2.4.9-android-sdk.zip。
- 为 Android 创建一个新的 OpenCV 开发文件夹。在本教程中,我们将 OpenCV SDK 解压到
C:\Work\OpenCV4Android\
目录下。
注意
最好使用不带空格的路径。否则ndk-build可能会有问题。
- 将 SDK 压缩包解压到所选目录。
您可以使用任何常用的压缩器(例如 7-Zip)解压:
在 Unix 上,您可以使用以下命令:
unzip ~/Downloads/OpenCV-2.4.9-android-sdk.zip
将 OpenCV 库和示例导入 Eclipse
- 启动 Eclipse 并选择工作区位置。
我们建议从一个新的干净工作区开始使用 OpenCV for Android。例如,可以在解压 OpenCV4Android SDK 软件包的文件夹中创建一个新的 Eclipse 工作区:
- 将 OpenCV 库和样本导入工作区。
OpenCV 库已打包成可直接使用的 Android 库项目。您只需在项目中引用即可。
OpenCV-2.4.9-android-sdk.zip
中包含的每个示例都是已引用 OpenCV 库的普通 Android 项目。请按照以下步骤将 OpenCV 和示例导入工作区:
- 右键单击 "包资源管理器 "窗口,然后从右键菜单中选择 "导入… "选项:
- 在主面板中选择常规 -> 工作区中的现有项目,然后按下 "下一步 "按钮:
- 在 "选择根目录 "字段中找到 OpenCV 软件包文件夹。Eclipse 会自动定位 OpenCV 库和示例:
- 单击 "完成 "按钮完成导入操作。
注意
OpenCV 示例确实依赖于 OpenCV 库项目,因此不要忘记将其也导入到工作区。
单击 Finish 按钮后,Eclipse 会将所有选定的项目加载到工作区,在构建 OpenCV 样本时,你需要等待一段时间。只需等待一分钟,Eclipse 就会完成初始化。
一旦 Eclipse 完成构建,你将拥有一个没有任何构建错误的干净工作区:
运行 OpenCV 示例
至此,您应该可以构建并运行示例了。请记住,人脸检测和教程 2 - 混合处理包含一些本地代码,需要 Android NDK 和 Eclipse 的 NDK/CDT 插件才能构建工作应用程序。如果尚未安装这些工具,请参阅 **Android 开发入门**的相应部分。
警告
请注意某些示例使用 Android Java Camera API,该 API 可通过 AVD 访问。
注意事项
最新的 Android SDK 工具(修订版 19+ )可以运行 ARM v7a 操作系统映像,但并不适用于所有
Android 版本。
从 Eclipse 运行示例非常简单:
- 使用 Android SDK 中的 adb 工具连接设备,或创建一个支持摄像头的模拟器。
- 有关 Android 模拟器的帮助,请参见管理虚拟设备文档。
- 有关使用真实设备(非模拟器)的帮助,请参见使用硬件设备。
- 在软件包资源管理器中选择要启动的项目,然后按 Ctrl + F11 或从主菜单中选择运行 -> 运行选项,或单击工具栏上的运行按钮。
注意事项
安卓模拟器可能需要几分钟才能启动。因此,请耐心等待。* 第一次运行时,Eclipse 会询问你应用程序的运行模式:
- 选择 "Android 应用程序 "选项,然后单击 "确定 "按钮。Eclipse 将安装并运行示例。
首次启动时,您可能没有安装 OpenCV Manager 软件包。在这种情况下,您将看到以下消息:
要消除该消息,您需要安装 OpenCV Manager 和相应的 OpenCV 二进制包。如果您的设备/模拟器上安装了 Google Play Market,只需点击 “是”。它将重定向到 Google Play Market 上的相应页面。
如果您无法访问市场(通常是模拟器),则需要手动安装 OpenCV4Android SDK 文件夹中的软件包。详情请参阅 “管理器选择
”。
<Android SDK 路径>/platform-tools/adb install <OpenCV4Android SDK 路径>/apk/OpenCV_2.4.9_Manager_2.18_armv7a-neon.apk
备注
armeabi、armv7a-neon、arm7a-neon-android8、mips 和 x86 代表平台目标:
armeabi适用于使用 Android API 8+ 的 ARM v5 和 ARM v6 体系结构、
armv7a-neon 用于经过 NEON 优化的ARM v7,支持 Android API 9+、
arm7a-neon-android8 适用于采用 NEON 优化的 ARM v7,支持Android API 8、
mips 用于 MIPS 架构,支持 Android API 9+、
x86 适用于 Intel x86 CPU,支持 Android API 9+。
如果使用硬件设备进行测试/调试,请运行以下命令了解其 CPU 架构:
adb shell getprop ro.product.cpu.abi
如果使用的是 AVD 模拟器,进入窗口 > AVD
管理器查看可用设备列表。单击所选设备右键菜单中的 “编辑”。在弹出的窗口中找到 CPU 字段。 详细信息请参阅 "管理器选择 "部分。
完成后,您就可以在设备/模拟器上无缝运行 OpenCV 示例了。
- 下面是在模拟器的相机预览上运行的图像处理示例。
下一步
现在,当您设置并配置好 OpenCV4Adroid SDK 实例后,您可能想在自己的应用程序中使用 OpenCV。您可以在另一篇 使用 OpenCV 的 Android 开发教程 中学习如何做到这一点。