android项目在不装opencvmanager.apk情况下,直接使用

原创 2015年11月18日 18:21:26

前一段时间公司项目要用到OpenCV的东西做图像处理,但是一般都要安装OpenCV的apk包才能正常使用(估计是要导入那些os库)


但是老板认为自己的apk安装之后,还要装别的apk,显得很菜,要求不安装OpenCV的apk


没有办法,只能安装老板说的来做.(只是想吐槽一下)自己以前在上大学的时候接触过一点点的C++.


在网上找了很多资料,OpenCV使用C代码来写的,源代码也下载下来了(文章最后会贴上OpenCV源代码的下载)

因为都是C的源码,,于是就想到,可以用NDK来调用.


说干就干吧,解压OpenCV的源码后,可以看到

1.


幸好里面有个sample,,估计就是例子,打开之后

2.


看了很久,这个face-detection里面就是直接调用源代码,不需要安装apk,也调用到JNI了.

于是乎............哈哈


自己本来对MK文件也不是特别的熟悉,,就拿这个项目的MK文件直接修改了,(face-detection/jni/Android.mk),里面Android.mk源文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

#OPENCV_CAMERA_MODULES:=off
#OPENCV_INSTALL_MODULES:=off     >>>>>如果这个设置为off产生很多os库,,设置为on只产生一个os库
#OPENCV_LIB_TYPE:=SHARED
include ../../sdk/native/jni/OpenCV.mk  >>>>这里是OpenCV源码C的路径里面的Mk文件

LOCAL_SRC_FILES  := DetectionBasedTracker_jni.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS     += -llog -ldl

LOCAL_MODULE     := detection_based_tracker

include $(BUILD_SHARED_LIBRARY)

然后在自己的项目里面配置NDK,,具体配置NDK的方法的话,网上有很多,,根据自己的需要配置NDK版本

然后在自己的工程下面新建一个jni的文件夹



把这4个文件全部都考进去


修改Android。mk文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
#OPENCV_LIB_TYPE:=STATIC
include ../sdk/native/jni/OpenCV.mk  =====>>>>>这个是关联源码的文件,我是吧OpenCV的sdk文件复制到了我的项目同一个目录下面,,,这个看情况修改

LOCAL_SRC_FILES  := DetectionBasedTracker_jni.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS     += -llog -ldl

LOCAL_MODULE     := detection_based_tracker

include $(BUILD_SHARED_LIBRARY)

源码文件就是OpenCV包里面的sdk文件的目录

然后clean一下项目,,自动回生成jar包.然后使用跟以前一样.

注意注意:在加载OpenCV的时候不一样,看代码

<span style="font-size:12px;">@Override
	protected void onResume() {
		super.onResume();
//		OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_10,this, mLoaderCallback);
//			System.out.println(1);
//			
//			System.load("/system/lib/libnative_camera_r4.4.0.so");
//			System.load("/system/lib/libopencv_dynamicuda.so");
//			System.load("/system/lib/libopencv_info.so");
//			System.load("/system/lib/libopencv_java.so");
//			System.load("/system/lib/libOpenCVEngine_jni.so");
//			System.load("/system/lib/libOpenCVEngine.so");
		
		if(OpenCVLoader.initDebug()){
			handler.sendEmptyMessage(HandlerWhatLib.LOAD_OPENCV_FINISH);
		}
		
	}</span>

就是加载不一样,加载过程,在文档上说最好在onresume里面加载,好了就可以尽情的享用了.

最后,不好意思opencv源码文件太大,传不上来,大家可以百度去下载.



Opencv4Android摆脱OpenCV manager.apk的安装

在进行Opencv4Android开发时,OpenCV manager.apk不是必须要安装的。通过将一些库集成到我们自己的应用可以摆脱OpenCV manager.apk的安装。...

OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种方式(让OpenCVManager永不困扰)

前文曾详细探讨了关于OpenCV的使用,原本以为天下已太平。

[安卓开发笔记一]Android开发配置opencv环境超详细教程

[安卓开发笔记一]Android开发配置opencv环境超详细教程 开发安卓项目时要用到opencv,在网上找了很多教程,踩了很多坑才弄好,这里将自己亲自配置的过程记录如下,方便后人 1、前期准备...

Android配置OpenCV,不需要安装OpenCV Manager

本文介绍了在Android环境下配置OpenCV的过程,提供必要文件的下载地址,并实现简单调用手机摄像头的操作,本文的方法避免了OpenCV 的 samples中必须安装OpenCV Manager的...
  • cqugao
  • cqugao
  • 2015年04月30日 11:23
  • 1024

Android 使用OpenCV的三种方式(Android Studio)

其实最早接触OpenCV是很久很久之前的事了,大概在2013年的5,6月份,当时还是个菜逼(虽然现在也是个菜逼),在那一段时间,学了一段时间的android(并不算学,一个月都不到),之后再也没接触a...

Opencv4Android 开发不需要安装OpencvManager的方法

本文是我结合很多的博文总结
  • nijiayy
  • nijiayy
  • 2016年03月25日 11:41
  • 2373

Android Studio 接入OpenCV 3.2.0 并不使用OpenCV_Manager_3.2.0的APK包来进行图像处理

2016年,公司让我做个手机号码识别功能,主要是快递运单上面的机打手机号码,当时研究了好长时间的OpenCV 也没有接入成功,主要是想把手机号码那块区域提取出来直接让Google的开源Tesserac...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

opencv4android开发中避免安装opencv manager APK的方法

Android Studio 接入OpenCV 3.2.0 并不使用OpenCV_Manager_3.2.0的APK包来进行图像处理

出自   在上篇中,我们成功配置了OpenCV在Eclipse中的开发环境,并成功运行其中一个demo,但是对于OpenCV Manager的依赖让其用户体验变得很差,那么我们应该如何剔除对Open...
  • PZ0605
  • PZ0605
  • 2017年05月31日 20:36
  • 504
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android项目在不装opencvmanager.apk情况下,直接使用
举报原因:
原因补充:

(最多只允许输入30个字)