新建module,选择android library,名称为opencvlib。上述参考文档中的内容简单分为下述几个步骤
a. 将OpenCV库中的库文件、头文件拷贝到当前工程中。将“OpenCV-android-sdk\sdk\native\libs”下的文件复制到opencvlib/libs;opencvlib/src/main下新建文件夹cpp,cpp下新建C++文件native-lib.cpp;
将“OpenCV-android-sdk\sdk\native\jni”下的整个include文件夹复制到cpp文件夹下
b. 使用CMake进行配置。opencvlib目录下新建文件CMakeLists.txt。其中,CMakeLists.txt中,从a步骤中的各个对应文件夹中加载对应opencv相关的so,头文件。编写自己的库文件,以SHARED方式输出.so文件。
c. 配置当前module的build.gradle:主要是添加与JNI相关的配置externalNativeBuild(配置cmake的CMakelIsts.txt文件位置和相应cmake配置)和ndk信息
d. 编写native-lib.cpp文件: 此时会使用extern "C"方式直接进行C语言下的函数,此时构建的函数为JAVA_包名_opencvlib_OpenCVUtil_grey函数
e. 编写JNI工具类:此时,即为在opencvlib module的java目录下,新建OpenCVUtil.java文件。在这个类中写函数private static native int[]grey(int[] pixels_, int width, int height);此时,会调用native-lib.cpp文件中的JAVA_包名_opencvlib_OpenCVUtil_grey函数。完成JNI调用。注意,此时需要
static {
System.loadLibrary(“native-lib”);
System.loadLibrary(“opencv_java4”);
}来加载cmake生成的两个文件
f. app模块中引用opencvlib这个module:引入opencvlib库,调用里面写的grey函数即可