Android使用OpenCV免安装Manager

1,下载OpenCV的,Android的SDK:HTTPS://opencv.org/opencv-3-4-1.html

70

  • apk:OpenCV Manager apk的存放目录(根据不同cpu型号有不同的apk请根据自己的机器cpu型号来应,一般v7a的就好了)。
  • samples:OpenCV的代码案例里面包括了人脸检测和其他。
  • SDK:包括了SDK和LIB包。

2,导入测试工程

使用Android Studio直接导入samples\face-detection中人脸检测用例工程

导入后修改OpeCV Library和主工程face-detection的build.gradle配置如下

70

3,配置NDK

新版Android Studio用于构建原生库的默认工具是CMake。如果直接在local.properties中添加ndk路径进行编译将会出现以下错误

Error: Your project contains C++ files but it is not using a supported native build system

由于很多现有项目都使用构建工具包编译其原生代码,Android Studio还支持ndk-build。如果想要将现有的ndk-build库导入到的Android Studio项目中:

首先在工程目录下的gradle.properties文件的末尾加上一句

Android.useDeprecatedNdk = true 

然后再在module的build.gradle(Module:app)的buildTypes上面添加sourceSets属性

sourceSets {
        main {
            jni.srcDirs = []
        }
    }

通过以上步骤配置工程将可编译正常并运行,接下来就是设置编译.so文件了

修改JNI下的Android.mk

#OPENCV_INSTALL_MODULES:=off
#OPENCV_LIB_TYPE:=SHARED
ifdef OPENCV_ANDROID_SDK
  ifneq ("","$(wildcard $(OPENCV_ANDROID_SDK)/OpenCV.mk)")
    include ${OPENCV_ANDROID_SDK}/OpenCV.mk
  else
    include ${OPENCV_ANDROID_SDK}/sdk/native/jni/OpenCV.mk
  endif
else
  include ../../sdk/native/jni/OpenCV.mk
endif

1:注意前面的“#”号,是注释的意思,删除即可。

2:注意这里有2个if else的判断,里面包含的是opencvsdk中的OpenCV.mk文件,这个修改成自己的opencv-sdk路径;如果mk路径错误在jni编译的时候会报错的;仔细看下错误会说明是OpenCV.mk路径找不到。

修改后如下

OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED

include D:\OpenCV-android-sdk\sdk\native\jni\OpenCV.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,常用的是动态链接库的方式;

4,编译动态库

Android Studio打开终端窗口cd进入工程main目录底下,输入命令ndk-build就可以进行编译(前提NDK需要添加到环境变量中),编译完后生成如下.so文件

E:\Android Project\OpenCV\app\src\main>ndk-build

70

如果需要编译多个CPU的架构动态连接库

JNI中有或创建Application.mk文件,则在该文件添加如下内容:

APP_ABI:= armeabi armeabi-v7a x86

JNI中没有或不想使用Application.mk文件,则在ndk-build参数中添加

E:\Android Project\OpenCV\app\src\main>ndk-build APP_ABI=“armeabi armeabi-v7a x86 mips”

5、导入静态库

将sdk\native\staticlibs目录下的文件复制到主工程项目下的jniLibs底下,没jniLibs则自行创建

70

6、导入so动态连接库

将编译生成的libdetection_based_tracker.so和libopencv_java3.so复制到jniLibs对应的CPU架构目录下,这样我们的项目就不需要安装OpenCV Manager apk也可运行了。

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值