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

    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

  • 相关阅读:
    协方差的意义
    ios7新特性实践
    微信支付大盗--黑色产业链
    UVA 297 Quadtrees(四叉树建树、合并与遍历)
    HDU 2876 Ellipse, again and again
    java中接口的定义与实现
    Oracle Linux 6.3下安装Oracle 11g R2(11.2.0.3)
    Fortran使用隐形DO循环和reshape给一维和多维数组赋初值
    Java实现 蓝桥杯VIP 算法训练 成绩的等级输出
    Java实现 蓝桥杯VIP 算法训练 成绩的等级输出
  • 原文地址:https://www.cnblogs.com/dawnminghuang/p/4139226.html
Copyright © 2020-2023  润新知