之前一直用IntelliJ IDEA 导入 opencv_android_sdk 的 java 包,在最后一步finish时,始终出错.
后来重新安装Android Studio 重复以上步骤,能顺利导入包 openCVLibrary320 (原因未知).
导入包后注意修改 sdk的 build.gradle 中的
android { compileSdkVersion 26 buildToolsVersion "26.0.2" defaultConfig { minSdkVersion 15 targetSdkVersion 26 } ... }
与 app build.gradle 中的一致.
按照网上很多教程:
接着在 app/src/main 目录下 创建一个jniLibs 目录,然后把sdk/native/libs 下所有文件 拷贝到jniLibs下,编译,运行。
这一步执行后运行程序会报错,指向的目标大概都是 需要loadLibrary.
OK,我就加入了:
// private static String strLibraryName = Core.NATIVE_LIBRARY_NAME; private static String strLibraryName = "opencv_java3"; // 不需要添加前缀 libopencv_java3 static { try { Log.e("loadLibrary", strLibraryName); System.loadLibrary(strLibraryName); } catch (UnsatisfiedLinkError e) { Log.e("loadLibrary", "Native code library failed to load. " + e); } catch (Exception e) { Log.e("loadLibrary", "Exception: " + e); } }
还是报错哦,找不到 libopencv_java3.so ,搞笑了,我就怀疑这个 libopencv_java3 路径有问题或者根本没有关联到项目,因为教程中直接让你把这个文件夹内容拷贝过来.
查资料 无果.
后来,把 jniLibs 目录放到 src/main/ 目录下 ,与Java 目录同一级. 然后在app 的 build.gradle 中添加:
android {
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.***.opencvdemo2"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
}
...
}
这样编译就能顺利通过.
最后:
其实根本不需要 jniLibs 这个目录.我本来导入了opencv 的java 包.
所以,删掉删掉.根本不需要拷贝什么文件.导入包就可以了.后续的配置什么的都删掉删掉.
下一篇,将会记录,Android + openCV 简单的静态图片人脸检测.