Android使用OpenCV4.2环境搭建

  • 下载sdk
  • 创建新的Android项目
  • 如果在已创建的Android项目中需要接入时(在创建项目时"未勾选"includeC++suport)
  • 项目配置
  • 下面开始画重点
  • 配置过程中遇到的问题

下载sdk

下载地址:https://opencv.org/releases/.

下载解压后目录:

创建新的Android项目

使用AndroidStudio新建项目选择c++支持,这是基础,新版本(AndroidStudio3.5.3)的as好像没有了这个选项。

如果在已创建的Android项目中需要接入时(在创建项目时"未勾选"includeC++suport)


1.需要在已支持C++的项目(或新建项目支持C++)中,将CMakeLists.txt文件复制一份到主工程app文件下

2.在main文件下创建cpp文件夹

3.在app的build.gradle中添加两处配置

android {   ...    defaultConfig {      ...      //配置1        externalNativeBuild {            cmake {                cppFlags "-std=c++11"            }        }    }    buildTypes {     ...    }    //配置2    externalNativeBuild {        cmake {            path "CMakeLists.txt"        }    }  ...}

项目配置

将解压后的sdk以Module方式导入项目并自行命名

修改导入Module下的build.gradle,并sync
将apply plugin: ‘com.android.application’
改为apply plugin: ‘com.android.library’

在app项目中将导入的Moduel以Modele Dependency方式引入

下面开始画重点

  1. 将so包引入项目中
    在主工程的main文件下创建jniLibs(注意大小写),将解压后的sdk/native/libs下的文件复制一份放到创建的jniLibs下面。
  2. 在activity中进行初始化
private BaseLoaderCallback  mLoaderCallback = new BaseLoaderCallback(this) {       @Override       public void onManagerConnected(int status) {           switch (status) {               case LoaderCallbackInterface.SUCCESS:               {                   Log.i("flag", "OpenCV loaded successfully");                      // todo                } break;               default:               {                   super.onManagerConnected(status);               } break;           }       }   };   @Override   protected void onResume() {       super.onResume();       if (!OpenCVLoader.initDebug()) {           Log.e("flag", "Internal OpenCV library not found. Using OpenCV Manager for initialization");           OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, this, mLoaderCallback);       } else {           Log.e("flag", "OpenCV library found inside package. Using it!");   mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);       }   }

或者简单一点可以直接这样:

    @Override    protected void onResume() {        super.onResume();       new OpenCVNativeLoader().init();    }
  1. 配置app的build.gradle
    在android/defaultConfig/externalNativeBuild/cmake下增加属性
    arguments “-DANDROID_STL=c++_shared”

    sync一下就可以愉快的进行开发了。

配置过程中遇到的问题

1:弹框提示需要opencv manager 支持,是否下载!
2:闪退,报错so包找不到!
检查:
配置是否支持c++(基础)
是否配置属性:arguments “-DANDROID_STL=c++_shared”
jniLibs下是否导入so文件

持续学习中~~~

更多相关文章

  1. 我的第一个开源android app[哇靠百科]
  2. 在Mac OS X 下配置Android(安卓)NDK(配置环境变量)
  3. 关于 Eclipse 导出 Android项目 JavaDoc 详细过程
  4. Android(安卓)Studio设置,减少对C盘空间的占用
  5. Android数据库升级、降级、创建(onCreate() onUpgrade() onDowng
  6. Android(安卓)adb 环境变量配置的坑 adb 不是内部或外部命令
  7. Android(安卓)Design in Action —— 编与集
  8. mac 下配置maven环境( 包括android工程使用maven)
  9. Android(安卓)Studio 3.0下Jni开发环境配置

随机推荐

  1. http 请求时间
  2. android之横向滚动图
  3. ZWebView使用简单介绍-Android
  4. android webket的应用,webview,javascrip
  5. android EditText inputAction后键盘保留
  6. Java乔晓松-android中上传图片到服务器To
  7. ImageView的属性 android:scaleType
  8. Android PackageInstaller:安装应用的应用
  9. Android(安卓)性能优化
  10. Android 调用系统摄像头