codecamp

OpenCV4 Android SDK

本教程旨在帮助您安装和配置OpenCV4Android SDK。

本指南是使用MS Windows 7编写的,尽管它也适用于GNU Linux和Apple Mac OS。

本教程假设您已安装并配置了以下软件:

  • JDK
  • Android SDK和NDK
  • Eclipse IDE
  • Eclipse的ADT和CDT插件

如果您需要上述任何方面的帮助,您可以参考我们的Android开发入门指南。

如果您在彻底按照这些步骤后遇到任何错误,请随时通过W3Cshool官方qun或OpenCV Q&A论坛与我们联系。我们将竭尽全力帮助您。

Tegra Android开发包用户

您可能已经使用了NVIDIA发布的用于Android开发环境设置的Tegra Android开发包(TADP)。

除Android开发工具之外,TADP 2.0还包括OpenCV4Android SDK,因此可以将其安装在系统中,您可以跳过本教程的示例部分。

有关TADP的更多详细信息,请参见“ Android开发入门指南”。

基本信息

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 文件夹包含用于Android的OpenCV API和库:
  • sdk/java 文件夹包含一个提供OpenCV Java API的Android库Eclipse项目,可以导入到开发人员的工作区;
  • sdk/native 文件夹包含用于ARM-v5,ARM-v7a和x86架构的OpenCV C ++标头(用于JNI代码)和原生Android库(* .so和* .a);
  • sdk/etc 文件夹包含与OpenCV分发的Haar和LBP级联。
  • apk 文件夹包含应安装在目标Android设备上的Android软件包,以通过OpenCV Manager API启用OpenCV库访问(见下面的详细信息)。

在可以访问Google Play市场(和互联网)的生产设备上,这些软件包将使用OpenCV Manager API在应用程序的第一次启动时从Market安装。但是没有Market或Internet连接的devkits需要手动安装这些软件包。如果需要,安装Manager.apk和可选binary_pack.apk。看Manager Selection详情。

注意
因为OpenCV团队可能会在Market上发布更新版本的软件包,因此从互联网进行安装是比较理想的方式。
  • amples文件夹包含示例应用程序项目及其预构建软件包(APK)。将它们导入Eclipse工作区(如下所述),并浏览代码以了解OpenCV在Android上的使用方式。
  • doc文件夹包含PDF格式的各种OpenCV文档。它也可以在http://docs.opencv.org在线获得。
注意
最新的文件(每夜制作)位于http://docs.opencv.org/2.4一般来说,它是最新的,但可以参考尚未发布的功能。
去做:
我不知道这是讨论OpenCV管理器的最好的地方

从版本2.4.3开始OpenCV4Android SDK使用OpenCV Manager API进行库初始化。OpenCV Manager是一种基于Android服务的解决方案,为OpenCV应用开发人员提供以下优势:

  • 紧凑的apk-size,因为所有应用程序使用与Manager相同的二进制文件,并且不将本机库存储在其中;
  • 在所有支持的平台上自动启用硬件特定优化;
  • 自动更新和错误修复;
  • 可信的OpenCV库源码。OpenCV的所有包都在Google Play上公布;

手动OpenCV4Android SDK设置

获取OpenCV4Android SDK

  1. 访问SourceForge上的OpenCV下载页面并下载最新的可用版本。目前它是OpenCV-2.4.9-android-sdk.zip
  2. 使用OpenCV开发为Android创建一个新的文件夹。对于本教程,我们将OpenCV SDK解包到C:\Work\OpenCV4Android\目录中。
    注意
    更好地使用没有空格的路径。否则您可能会遇到ndk-build问题。
  3. 将SDK归档解压缩到所选目录中。

    您可以使用任何流行的归档器(例如使用7-Zip)来解压缩它:

OpenCV4 Android SDK

在Unix上,您可以使用以下命令:

unzip〜/ Downloads / OpenCV-2.4.9-android-sdk.zip

将OpenCV库和示例导入Eclipse

1、启动Eclipse并选择您的工作区位置。

我们建议您从新的干净工作区开始使用OpenCV for Android。例如,可以在打开OpenCV4Android SDK包的文件夹中创建一个新的Eclipse工作区:

OpenCV4 Android SDK

2、将OpenCV库和样本导入工作区。

OpenCV库作为一个可以使用的Android图书馆项目进行打包。您可以在项目中简单地引用它。

每个包含的样本OpenCV-2.4.9-android-sdk.zip都是已经引用OpenCV库的常规Android项目。按照以下步骤将OpenCV和样本导入工作区:

  • 右键单击包资源管理器窗口,然后从上下文菜单中选择导入...选项:

OpenCV4 Android SDK

  • 在主面板中,选择常规 - >现有项目进入工作区,然后按下一步按钮:

OpenCV4 Android SDK

  • 在“选择根目录”字段中找到OpenCV包文件夹。Eclipse应该自动定位OpenCV库和示例:

OpenCV4 Android SDK

  • 单击完成按钮完成导入操作。
注意
OpenCV样本确实依赖于OpenCV库项目,所以不要忘记将其导入到您的工作区。

单击完成按钮后,Eclipse会将所有选定的项目加载到工作空间中,并且在构建OpenCV样本时必须等待一段时间。只需给一分钟的Eclipse完成初始化。

OpenCV4 Android SDK

一旦Eclipse完成构建,您将拥有干净的工作空间而不会造成任何构建错误

OpenCV4 Android SDK

运行OpenCV示例

此时您应该可以构建和运行样品。请记住,面部检测和教程2 - 混合处理包括一些本机代码,并需要Android NDK和NDK / CDT插件来构建工作应用程序。如果您尚未安装这些工具,请参阅Android开发中的简介部分。

警告

请考虑一些示例使用Android Java Camera API,可通过AVD访问。

注意
最近* Android SDK工具,版本19 + *可以运行ARM v7a操作系统映像,但它们不适用于所有Android版本。

那么,从Eclipse运行的样本很简单:

  • 将您的设备与Android SDK中的adb工具连接,或创建具有相机支持的模拟器。
  1. 有关Android模拟器的帮助,请参阅管理虚拟设备文档。
  2. 有关实际设备(而不是仿真器)的帮助,请参阅使用硬件设备
  • 选择要在Package Explorer中启动的项目,然后按Ctrl + F11或从主菜单中选择Run - > Run选项,或单击工具栏上的Run按钮。
注意
Android模拟器可能需要几分钟才能开始。所以请耐心等待 *第一次运行时,Eclipse会询问您的应用程序的运行模式:

OpenCV4 Android SDK

  • 选择Android应用程序选项,然后单击确定按钮。Eclipse将安装并运行示例。

有可能在第一次启动时,您将不会安装OpenCV Manager软件包。在这种情况下,您将看到以下消息:

OpenCV4 Android SDK

要摆脱消息,您将需要安装OpenCV管理器和相应的OpenCV二进制包。如果您的设备/模拟器上安装了Google Play市场,只需点击是。它将重定向到Google Play Market上的相应页面。

如果您无法访问市场(仿真器通常是这种情况),则需要手动从OpenCV4Android SDK文件夹安装软件包。看Manager Selection详情。

<Android SDK path>/platform-tools/adb install <OpenCV4Android SDK path>/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是针对具有Android API 9+的MIPS架构,
  • x86适用于具有Android API 9+的Intel x86 CPU。
如果使用硬件设备进行测试/调试,请运行以下命令来了解其CPU架构:
adb shell getprop ro.product.cpu.abi
如果您使用AVD仿真器,请转到Window> AVD Manager以查看可用设备的列表。在所选设备的上下文菜单中单击编辑。在窗口中,然后弹出窗口,找到CPU字段。
您也可以看到Manager Selection细节部分

完成后,您可以无缝地在设备/模拟器上运行OpenCV示例。

  • 这里是样品 - 图像操作示例,运行在模拟器的库存照相机预览之上。

emulator_canny

下一步是什么

现在,当您设置和配置OpenCV4Adroid SDK的实例时,您可能需要继续在自己的应用程序中使用OpenCV。您可以通过OpenCV教程在单独的Android开发中学习如何做到这一点。


OpenCV Android开发教程
Android开发项目中使用OpenCV库
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OpenCV教程

OpenCV高级GUI和媒体(highgui模块)

OpenCV图像输入和输出(imgcodecs模块)

对象检测(objdetect模块)

计算摄影(照片模块)

图像拼接(拼接模块)

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }