OpenCV学习笔记(五)—— OpenCV for Android剔除OpenCV Manager依赖
来源:互联网 发布:dcs 化工仿真软件 编辑:程序博客网 时间:2024/04/29 21:58
在上篇中,我们成功配置了OpenCV在Eclipse中的开发环境,并成功运行其中一个demo,但是对于OpenCV Manager的依赖让其用户体验变得很差,那么我们应该如何剔除对OpenCV Manager依赖呢?在此之前,我们应先了解一下OpenCV Manager。
一、OpenCV Manager简介:
OpenCV Manager是一个android服务,用于初始化OpenCV库,使用此服务的作用:
1. 压缩apk大小,所有程序使用同样的二进制代码,而不是各自使用各自的本地库;
2. 所有支持平台上自动进行特定的硬件优化;
3. 自动更新和bug修复;
4. opencv库已被信任,所有调用opencv库的包apk可以直接发布到googleplay上;
用解压工具打开OpenCV Manager,发现里面其实就是大量的.so库文件:
二、剔除OpenCV Manager:
想要不安装OpenCV Manager,且通过JNI方式调用OpenCV,其实有三种方式:
a.使用静态的OpenCV库的方式
b.使用动态的OpenCV库的方式
c.同时使用Java的API和JNI的接口的方式(动态链接OpenCV库)
关于这三种方式更详细的介绍请查看:http://blog.csdn.net/yanzi1225627/article/details/27863615
这里我们以OpenCV Sample - face-detection这个demo为例进行修改,其中需要修改的有两个文件:Android.mk和FdActivity.java:
1.修改makefile:
在jni文件目录下【Android.mk】文件,将原本被屏蔽掉的几行配置进行修改:
上图中OPENCV_CAMERA_MODULES、OPENCV_INSTALL_MODULES和OPENCV_LIB_TYPE这三个参数的作用分别是:
OPENCV_CAMERA_MODULES:为on时,会自动将带camera的so拷贝至工程下的libs目录下面;
OPENCV_INSTALL_MODULES:为on时,自动将依赖的OpenCV的so库拷贝到工程下的libs目录下面,但是只对OPENCV_CAMERA_MODULES有效;
OPENCV_LIB_TYPE:链接库的方式,分为静态和动态两种,静态时为STATIC,动态时为SHARED,常用的是动态链接库的方式;
(注:以上三种方式都无需安装OpenCVManager,区别在于mk文件的不同。)
其他的参数意义:
LOCAL_MODULE:是生成的库的名称;
LOCAL_SRC_FILES:是jni文件夹下的.cpp文件。
2.修改【FdActivity.java】文件:
查看可以发现在此处,通过OpenCVLoader进行了OpenCV Manager的初始化和启动,这是剔除OpenCV Manager的关键所在,所以我们应该屏蔽OpenCVLoader.initAsync该行代码:
完成以上修改之后,我们删除手机设备中的OpenCV Manager.apk,然后在手机上运行修改后的程序,发现启动程序时不会再提示需要安装OpenCV Manager,至此我们成功将demo对OpenCV Manager API的依赖剔除掉。
有没有发现demo中人脸识别的准确度其实很低,并没有那么地精确。
- OpenCV学习笔记(五)—— OpenCV for Android剔除OpenCV Manager依赖
- OpenCV学习笔记(四)—— OpenCV for Android移植到Android平台
- OpenCV学习笔记(六)—— OpenCV for Android打开相机
- OpenCV学习笔记(七)—— OpenCV for Android实时图像处理
- OpenCV学习笔记(七)—— OpenCV for Android实时图像处理
- OpenCV学习笔记(七)—— OpenCV for Android实时图像处理
- opencv学习笔记(五)
- OpenCV学习笔记(五)
- opencv学习笔记(五)
- OpenCV学习笔记(五)—内存存储
- OpenCV笔记(五)
- 学习OpenCV(五)
- OpenCV学习笔记(二)—— OpenCV整体结构
- OpenCV学习笔记(三)—— OpenCV编程起点
- OpenCV学习笔记系列(五)
- opencv学习笔记系列(五)
- OpenCV学习笔记(五):Mat结构
- OpenCV python学习笔记(五)
- java重载-方法重载中的准确性原则
- C#中限制访问器可访问性
- ATL-连接点和接口方法的使用
- struts2 验证框架validation.xml不起作用的原因
- 形篇
- OpenCV学习笔记(五)—— OpenCV for Android剔除OpenCV Manager依赖
- /dev/fb0入门练习(linux FrameBuffer)
- oc
- Count the Colors
- Android中的自定义注解(反射实现-运行时注解)
- linux用户和用户配置文件(nobody)
- 钩子(hook)编程
- 如何获得Windows 8.1中已记住的WIFI的明文密码
- 详解持久化Core Data框架的原理以及使用