先去官网下载OpenCV https://opencv.org/releases/
在android上用OpenCV有3种方法:
1.OpenCV SDK + OpenCV Manager(这是个apk,要安装到手机上)
2.OpenCV SDK + OpencCV库(.so文件)
3.OpenCV库 + JNI 这个方法最难,目前我不会
第一个方法和第二个方法基本一样,只是第一个方法不用拷贝OpenCV库到你的项目中,然后需要安装OpenCV Manager(你下载的OpenCV SDK目录下的apk文件夹中有,选择适合的版本安装)
第三个方法最难,目前我不会还要研究,这个方法我觉得应该是最好,但是也是最复杂的。
我们这里就介绍第二种方面,配置简单方便,适合一般开发。当然它的apk体积会比较大,因为加了.so文件。由于在 Java 层进行开发,在某些场景下会导致运行效率不高。
OpenCV SDK + OpencCV库
1.新建一个android studio项目
你要使用OpenCV的项目
2.导入一个OpenCV SDK
路径选择你下载的那个OpenCV SDK。/.../sdk/java 到java层。然后Module name会自己出来,你下载的版本不一样,名字也不一样。然后一路下一步。
3.修改gradle
刚导入module会有错误,主要是OpenCV用的android sdk版本可能你的电脑上没有。这里把OpenCV的gradle的一些minSdkVersion,targetSdkVersion 改的和你要使用OpenCV的项目一样。
4.添加依赖
File->Project Structure 选择你的项目,然后切换到Dependencies,点击+,选择Module dependency,选择OpenCV。
5.拷贝OpenCV库
在你的项目中src/main/下面新建一个文件夹,叫jniLibs。然后把OpenCV SDK目录中的sdk/native/libs下的文件拷贝到你的项目中。这里有很多个文件夹,不同的文件名对应的是不同的CPU架构,你也可以全部拷贝过来,就是你的apk会变的很大,安装比较慢。你也可以选择性的拷贝你需要的。
参考:
- armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
- arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
- armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
- x86: 平板、模拟器用得比较多。
- x86_64: 64位的平板。
arm64-v8a可以向下兼容,一般用这个就行了。
到这里OpenCV就配置完成,你可以用下面代码验证下。
Boolean b=OpenCVLoader.initDebug();
Log.i("aaron","opencv init "+b);