OpenCV For Android

OpenCV之Android开发

本人第一次接触OpenCV是在2014年11月份,当时因公司项目需要,开始学习OpenCV。当时记得公司要做一个识别类的项目,由于本人之前并没有相关经验,无从下手,因此那段时间烦扰了度娘和股沟不少。之后下载了一个相关的APP,好像是介绍对象的老大做的教育的项目,叫梯子网。只不过这媒婆感觉就适合做相亲介绍对象的东西,所以过了不久,这个被给予厚望的网站,跪了。但是她做的项目确实不错,可能是时间不对吧。默哀。。。

扯远了,O(∩_∩)O哈哈~
话说当时下载了这个叫梯子打分的APP,然后用了一下还不错,原理都是相通的,但是还是无处下手,因此突然想起了大学时候,老师传授的一门绝世武功——反编译。通过反编译,看到了他的类库libs包下的东西,什么


libopencv_java.so

然后复制粘贴,问度娘这是啥东东,度娘不负所托,然后就继续找到了OpenCV,这就开始接触了。

距离那个项目完成快两年了,现在又要重新拾起,由于当时的学习资料都已丢失,不得不重新再来,又研究了一遍,发现以前不怎么懂的东西,现在通过看源码,有点懂了,特此记录一下,方便以后使用。


环境配置

本人当前系统为window7,所以会根据window7操作系统来进行环境配置

Android 开发环境配置

有关Android开发环境配置的一搜一大把,不懂的可以问度娘或者股沟啊

无非就包括以下三个方面的准备:

  • JDK

JDK本人使用的是1.7版本,建议使用1.7,因为新的OpenCV sdk对于JDK有要求,环境配置就不说了

  • NDK

NDK 安装好之后,配置一下环境变量,因为NDK编译需要

  • IDE

IDE关于Android开发的主要有两种:

- 第一个,就是Android Studio

Android studio 是Android官方推荐使用的IDE工具,功能更加适合Android开发者使用,而且Android官网以后不再提供Eclipse ADT插件的更新,所以建议使用Android Studio来进行项目操作

- 第二个,是Eclipse

Eclispe的强大功能就不说了

本文将对于以上两种IDE工具展开说明。

当以上环境配置好之后,现在就是OpenCV的使用了

OpenCV使用

  • 首先,去OpenCV官网去下载的sdk

OpenCV下载地址,本人下载的是3.0版本

这里写图片描述

http://opencv.org/downloads.html

  • 解压
  • 导入相关包

Eclipse导入

  • 首先,导入包

可以选择一般工程导入也可以选择Android工程导入,建议选择一般工程导入,因为这样可以配置成自己的SDK版本,比较方便

这里写图片描述

这里写图片描述

  • 其次,看到一些导入错误

这里写图片描述

  • 纠正错误

如下面图的步骤

这里写图片描述

这里写图片描述

这里写图片描述

OK,通过这样一步步的配置除了使用NDK的项目都可以运行了,NDK项目的配置,参见我的另一篇博客

Android OpenCV NDK 配置问题

OpenCV 初始化机制

通过代码介绍一下,它的初始化机制


@Override
    public void onResume()
    {
        super.onResume();

        if (!OpenCVLoader.initDebug()) {
            Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
        } else {
            Log.d(TAG, "OpenCV library found inside package. Using it!");
            mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
        }
    }

通过调用OpenCVLoader.initDebug()来进行初始化,如果初始化不成功就会调用

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);

如果成功,就会调用回调函数

mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);

OpenCV Manager加载机制

如何不使用OpenCV Manager

猜你喜欢

转载自blog.csdn.net/u013108408/article/details/52241731