opencv4android开发文档翻译第一篇Android OpenCV Manager

OpenCV4Android Reference

openCV for android 参考

一.      Android openCV Manager(android openCV 管理器)

内容:

1.   introduction(简介)

openCV Manager 是一项向终端设备用户提供针对openCV库文件进行管理的android服务。它允许在同一设备上的不同应用之间共享openCV动态库。管理器(openCV Manager)提供的好处如下:

<1>.更少的内存占用。所有的APP通过调用服务使用相同的库,没必要每个都去加入库文件。

<2>.对所支持的平台硬件特性优化

<3>.可信的openCV库源。所有与openCV有关的包都发布在谷歌Play商店

<4>.定期更新和BUG修复

a.   Usage model for end user(终端用户使用模式)

第一个OpenCV APP:

<1>.任何基于openCV的APP必须从谷歌市场下载或手动安装

<2>.第一次加载时,他会提示openCV Manager的安装信息

<3>.然后用谷歌商店下载安装

<4>.当Manager已经启动时,应用会提示对于当前设备的OpenCV是否合适

<5>.安装完成之后,APP启动

 

 

 

 

 

 

b.   Architecture of OpenCVManager(OpenCV管理器的体系结构)

 

 

 

2.   manager workflow(管理工作流)

<1>怎么选择合适的opencv manager 版本

从1.7版本开始,openCvmanager 就有了不同的几个版本。每个包针对不同的硬件平台,匹配不同的opencv库。因此,在大多数情况下,opencv manager使用内置的openCV版本。单独的opencv库的包一般用在罕见的情况,当一个不支持neon 的ARMV7A处理器被检测到的时候。在这种情况下,就需要一个额外的包。新的包选择逻辑在大多数情况下,简化了opencv在终端用户的安装。大多数情况下,opencv manager会在谷歌应用商店自动安装。

如果谷歌应用商店不可用(例如在模拟器、开发面板等),你可以用adb tool来进行手工安装。代码如下:

 Adb install OpenCV-2.4.9-android-sdk/apk/OpenCV_2.4.9_Manager_2.18_<platform>.apk

使用下面的表来选择合适的opencv manager


<2>第一次应用程序的启动

在opencv 库中是没有opencv manager的

 

<3>其他库的安装

有opencv manager 服务,但是不包括适当的opencv库。如果已经允许安装了opencv库:


如果opencv库取消了安装:


<4>应用程序启动规则

Opencv manager和opencv库已经安装完毕:


3.   java openCV Loader(java openCV 加载)

类OpenCVLoader

辅助类为opencv库提供共同的初始化方法

<1>BooleaninitDebug()

Static BooleaninitDebug()

从当前应用程序包中加载和初始化opencv库。大体上跟system.loadLibrary(“opencv_java”)相似.

返回值类型:boolean

返回值:当opencv初始化完成后返回true

注意:这个方法已经弃用。它是专为实验和本地开发而设计的。如果你想发布你的APP请使用异步初始化方法。

<2>BooleaninitAsync()

Static BooleaninitAsync(String Version,Context AppContext,LoaderCallbackInterface callback)

使用opencv manager加载和初始化opencv库.

参数:Version –opencv library version(opencv库版本)

      AppContext –连接到服务的应用程序上下文

      Callback -对象,实现加载回调接口LoaderCallbackInterface,来处理连接状态(参见BaseLoaderCallback)

返回值类型  Boolean

返回值        如果opencv初始化启动成功返回true

 

<3>opencvversion constants(版本常量)

OPENCV_VERSION_2_4_2

      Opencv Library version 2.4.2

OPENCV_VERSION_2_4_3

      Opencv Library version 2.4.3

OPENCV_VERSION_2_4_4

      Opencv Library version 2.4.4

OPENCV_VERSION_2_4_5

      Opencv Library version 2.4.5

OPENCV_VERSION_2_4_6

      Opencv Library version 2.4.6

OPENCV_VERSION_2_4_7

      Opencv Library version 2.4.7

OPENCV_VERSION_2_4_8

      Opencv Library version 2.4.8

 

4.   base Loader Callback InterfaceImplementation(基本加载回调接口实现)

类BaseLoaderCallback

LoaderCallbackInterface的基本实现类。这个实现的逻辑使用下面的机制比较好理解:

<1>Usingin java Activity

这里有一个非常基础的实现异步初始化BaseLoaderCallback的代码片段.想了解更多详见“15-puzzle”opencv样例。

1

 2

 3

 4

 5

 6

 7

 8

 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

publicclassMyActivityextends Activityimplements HelperCallbackInterface

{

private BaseLoaderCallback mOpenCVCallBack=new BaseLoaderCallback(this){

   @Override

   publicvoidonManagerConnected(int status){

     switch(status){

       case LoaderCallbackInterface.SUCCESS:

       {

          Log.i(TAG,"OpenCV loaded successfully");

          // Create and set View

          mView =new puzzle15View(mAppContext);

          setContentView(mView);

       }break;

       default:

       {

          super.onManagerConnected(status);

       }break;

     }

   }

};

 

/** Call on every application resume **/

@Override

protectedvoidonResume()

{

    Log.i(TAG,"Called onResume");

    super.onResume();

 

    Log.i(TAG,"Trying to load OpenCV library");

    if(!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6,this, mOpenCVCallBack))

    {

        Log.e(TAG,"Cannot connect to OpenCV Manager");

    }

}

 

<2>Using inService

默认的BaseLoaderCallback实现把应用程序上下文当作Activity来处理,如果初始化失败调用Activity.finish()方法。重写这一方法你需要重写BaseLoaderCallback类中的finish()方法,用你自己最终的方法实现。

5.   Loader Callback interface(加载回调接口)

6.   Install Callback Interface(安装回调接口)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值