您的位置:首页 > 移动开发 > Android开发

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

2014-12-09 15:06 357 查看
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(安装回调接口)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: