Android Studio集成OpenCV

SDK关键别用4.0.0版的用老版

Android Studio集成OpenCV_第1张图片

  1. 创建新项目或者使用老项目
    使用向导创建一个新项目(Menu:/File/New Project)。

  2. 编译运行
    这时候可以试试运行新建的项目(Menu:/Run/Run ‘app’)。可以试试修改文件app/res/layout/content_main.xml,修改一下字符串“Hello world!”,然后看看运行效果。

  3. 下载OpenCV for Android
    从opencv网站下载OpenCV for Android,解压到本地目录,例如/opt/OpenCV-android-sdk。
    确定sdk/native/libs目录下有arm…,mips…和等开头的子目录,这些是针对不同平台的编译好的库文件。稍后我们需要把libs目录复制到项目中。

  4. 在项目中导入OpenCV
    把OpenCV导入到项目中(Menu:/File/New/import_Module):
    Source-directory:{unzip-dir}/adk/java
    Module name: Android Studio能自动填充这个信息openCVLibrary310,这个我们不用修改,默认就行
    点击“next”,接下来有3个复选框,我们需要全部选中,点击“Finish”

    接下来,Android Studio开始导入module,完成后,能够看到import-summary.txt,如下图:
    Android Studio集成OpenCV_第2张图片

同时,你还会看到一个错误信息,说找不到android-14,这是因为我们下载的OpenCV中的build.gradle里配置的是用android API version 14编译,默认情况下,我们的Android SDK里已经不包含android-14这个版本了。后面我们需要解决这个错误。

Android Studio集成OpenCV_第3张图片

  1. *设置Module依赖
    因为我们的app里要使用opencv库里提供的方法,我们需要在app的依赖里增加刚导入进来的opencv module。

打开project structure(Menu:/File/Project_Structure)
选择“app”module
切换到Dependenciestab页
点“+”,选择Module,能看到openCVLibrary310,选择之
6. 查看app build.gradle
项目中有很多个build.gradle文件,我们要看app的build.gradle文件,这个文件在目录cvtest1/app下面,在project视图里是这样的build.gradle(Module:app),重点看如下内容:
Android Studio集成OpenCV_第4张图片

compileSDKVersion (mine says 23)
buildToolsVersion (mine says 23.0.2)
minSdkVersion (mine says 19)
targetSdkVersion (mine says 23)
7. *修改OpenCV build.gradle
我们需要按照上面的内容来修改OpenCV的build.gradle,默认情况下,在project view下看不到新导入的openCVLibrary310,如下图:

这时,我们可以切换左上角的Android视图到Project Files视图,如下图:

上图光标选中的build.gradle文件就是我们要修改的文件。
8. Rebuild Project
rebuild项目(Menu:/Build/Rebuild Project),这时应该没有错误信息了,如下图:

这时在project view的Android视图里,可以看到openCVLibrary310这个Module了,如下图:

  1. *复制OpenCV Native lib到项目
    复制{unzip-dir}/sdk/native/libs到项目cvtest1/openCVLibrary/src/main/目录下,重命名为jniLibs,如图所示:
    Android Studio集成OpenCV_第5张图片

  2. 修改代码,加载OpenCV so
    修改文件MainActivity.java,在函数onCreate最后增加如下代码,加载OpenCV动态链接库。

if (!OpenCVLoader.initDebug()) {
Log.e(this.getClass().getSimpleName(), " OpenCVLoader.initDebug(), not working.");
} else {
Log.d(this.getClass().getSimpleName(), " OpenCVLoader.initDebug(), working.");
}
运行一下

作者:menglj
链接:https://www.jianshu.com/p/e90da53c4bb5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(android,安卓,opencv)