android学习五---OpenCV for android环境搭建

来源:互联网 发布:淘宝生意参谋数据异常 编辑:程序博客网 时间:2024/04/24 12:20

     学习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,就可以看到手机的架构了如图

image

在手机上装好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

0 0
原创粉丝点击