OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
-
首先我们去下载sdk 点击即可 OpenCV下载链接,下载完成之后 我们来看看下载的文件
sdk 目录提供了Android的API与Java 库
sdk/java 目录包含了一个 Eclipse 项目,该项目提供 OpenCV 的Java API,且可以导入到开发环境里。
sdk/native 目录包含了OpenCV C++ 头文件(用于JNI),与Android的 .so动态库 .a静态库。
sdk/etc 目录包含了Haar 与 LBP cascades 级联。
apk 目录包含了用户安装在指定的Android设备的安装文件,该文件使opencv 库可以管理opencv API
(以上解释参考了http://www.cnblogs.com/xiaoxiaoqingyi/p/6676096.html 解释的非常清楚,本文只是做个笔记,加入个人理解,为以后使用作参考。) -
创建android studio项目并且导入 sdk/java 文件以module的形式
具体一个module的导入流程我就不多说了,导入module之后会报一系列的错误;
错误一:Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve project :java. Open File Show Details Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Could not resolve project :java. Open File Show Details
这个错误是因为我们导入的opencv的java文件是个 application 而不是一个library,所以修改方法首先打开我们导入的opencv module的buid.gradle 把application修改成library
错误二:
brary projects cannot set applicationId. applicationId is set to 'org.opencv' in default config.
如图把深色部分删除重新编译即可:
这样我们的项目就能编译通过了。
- 集成.so文件
1.在项目中app/src/main下面创建 package 名为 jniLibs 包名。
2.把 sdk/native/libs 中的so文件拷贝到 jniLibs 包下面,注意此时apk会变得很大大约60M,so 我们需要把无用的so给删除
3.我们知道armeabi-v7a 和 arm64-v8a 是不同手机cpu编译的文件,而 x86 和 x86_64 是模拟器编译的so文件,所以我们可以把模拟器的so给删除,因为我们都用手机,这时apk大约10M左右。
- 调用代码检测 opencv 是否配置成功
在mainactivity中我们可以添加以下代码:private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i("rr", "OpenCV loaded successfully"); } break; default: { super.onManagerConnected(status); } break; } } };
@Override protected void onResume() { super.onResume(); if (!OpenCVLoader.initDebug()) { Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization"); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback); } else { Log.d(TAG, "OpenCV library found inside package. Using it!"); mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); } }
接着运行 项目,查看log日志,观察是否成功。
编译成功的地址github:https://github.com/WangRain1/OpencvDemo 我的是ubuntu系统
commit id 切换到:just add opencv sdk.