Android+OpenCV4.2.0环境配置详解(Android studio)

仅是个人记录,希望能对有需要的给予一些小小的帮助

首先我们肯定是要去到OpenCV的官网下载对应的SDK,并解压得到文件夹(opencv-4.2.0-android-sdk

其次是NDK环境搭建(双击shift,输入sdk,找到sdk manager,将下面红色框框勾选安装)

创建项目,我选用的是(并不是只有这一选择)

导入Module
File->New->Import Module
路径选择**\opencv-4.2.0-android-sdk\OpenCV-android-sdk\sdk\java
然就一路finish

之后会得到两个gradle(一个是:app,另一个是Import Module时你自定义的名字)

Module:opencv的gradle修改成如下,compileSdkVersion和buildToolsVersion与你项目中app的gradle相同即可

apply plugin: 'com.android.library'

android {
  compileSdkVersion 29
  buildToolsVersion "29.0.2"

  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
  }
}

将解压的文件夹中的,**\opencv-4.2.0-android-sdk\OpenCV-android-sdk\sdk\native\libs路径下的文件夹全部拷贝至项目的libs文件夹下(切换成Project视图,app文件夹下)。

接着在app的gradle中添加该依赖implementation project(path: ':opencv'),以及再添加

sourceSets {
  main{
    jniLibs.srcDirs = ['libs']
  }
}

继续在app的gradle中的cmake的大括号里添加arguments "-DANDROID_STL=c++_shared",以避免出现dlopen failed: library “libc++_shared.so” not found的错误,以下是我build.gradle(Module:app)的全部内容

apply plugin: 'com.android.application'

android {
  compileSdkVersion 29
  buildToolsVersion "29.0.2"
  defaultConfig {
    applicationId "com.e.opencv_test"
    minSdkVersion 23
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    externalNativeBuild {
      cmake {
        cppFlags ""
        arguments "-DANDROID_STL=c++_shared"
      }
    }
  }
  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
  }
  externalNativeBuild {
    cmake {
      path "src/main/cpp/CMakeLists.txt"
      version "3.10.2"
    }
  }
  sourceSets {
    main{
      jniLibs.srcDirs = ['libs']
    }
  }
}

dependencies {
  implementation fileTree(dir: 'libs', include: ['*.jar'])
  implementation 'androidx.appcompat:appcompat:1.1.0'
  implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
  testImplementation 'junit:junit:4.13'
  androidTestImplementation 'androidx.test.ext:junit:1.1.1'
  androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
  implementation project(path: ':opencv')
}

在MainActivity中加载库System.loadLibrary("opencv_java4");(可以直接复制以下代码检测是否配置成功)

public class MainActivity extends AppCompatActivity {
  private static final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    System.loadLibrary("opencv_java4");
    iniLoadOpenCV();
  }

  private void iniLoadOpenCV() {
    boolean success = OpenCVLoader.initDebug();
    if (success) {
      Log.i(TAG, "成功");
    } else {
      Log.i(TAG, "失败");
      Toast.makeText(this.getApplicationContext(), "失败", Toast.LENGTH_LONG).show();
    }
  }
}

此配置方法可能过程繁琐,但是就是希望做到一次配置成功

这是第一次在CSDN写博客,仅仅是为个人记录,因为在此之前的配置踩了很多坑,同时也希望能帮到有需要的人。
如果有哪里写的不好,做的不好的,希望大家能在评论中多多指教。

该方法配置出来的环境可以使用OpenCV库里的函数,但是不能打开摄像头预览

到此这篇关于Android+OpenCV4.2.0环境配置详解(Android studio)的文章就介绍到这了,更多相关Android OpenCV4.2.0环境配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-10-11

Android Studio中配置OpenCV库开发环境的教程

1.下载 进入官网(http://opencv.org/)下载OpenCV4Android并解压.目录结构如下图所示. 其中,sdk目录即是我们开发opencv所需要的类库:samples目录中存放着若干opencv应用示例(包括人脸检测等),可为我们进行android下的opencv开发提供参考:doc目录为opencv类库的使用说明及api文档等:而apk目录则存放着对应于各内核版本的OpenCV_2.4.3.2_Manager_2.4应用安装包.此应用用来管理手机设备中的opencv类库,

Android Studio中使用jni进行opencv开发的环境配置方法

使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到使用gradle的方案,摸了几天,总算是摸清楚了. 其实找对了方法,用android studio配置环境要比eclipse简单很多,首先是预先准备的环境: 1.Android studio,官网最新版,我用的是2.3.1: 2.OpenCV4Android,官网最新版,我用的3.2.0: 就这两个

Android Studio中导入JNI生成的.so库的实现方法

Android Studio中导入JNI生成的.so库的实现方法 由于在原来的ADT的Eclipse环境中,用ndk_build工具生成了相应的各个.so库文件之后,eclipse工具就会自动把这些库导入到apk中.而Android Studio目前为止(0.86版本)还无法做到那么自动,但是我们可以通过以下方式进行. 首先在Android Studio工程的app目录下创建整个jni目录,jni目录里写Android.mk.Application.mk以及各类C/C++和汇编源文件.然后跟原来

详解Android Studio中Git的配置及协同开发

一. Android Stutio配置git setting–>Version Control–>Git–>Path to Git executable中选择git.exe的位置,这个Stutio一般会默认配置好: 配置完路径后点击后面的Test按钮,出现下面提示框则表示配置成功: 二. 将项目分享到github 1. 设置github账号密码 打开Setting–>Version Control–>GitHub,填写完账号密码后,点击Test测试,如果连接成功会弹出如下提示

Android Studio中通过CMake使用NDK并编译自定义库和添加预编译库

Note:这篇文章是基于Android Studio 3.01版本的,NDK是R16. step1:创建一个包含C++的项目 其他默认就可以了. C++ Standard 指定编译库的环境,其中Toolchain Default使用的是默认的CMake环境:C++ 11也就是C++环境.两种环境都可以编库,至于区别,后续会跟进,当前博文使用的是CMake环境. Exceptions Support 如果选中复选框,则表示当前项目支持C++异常处理,如果支持,在项目Module级别的build.g

Android Studio开发之 JNI 篇的简单示例

前言 Android上层应用使用java开发,不过java并不适合密集型运算,比如图片处理等,遇到密集型运算,一般使用c/c++完成. Java虚拟机支持调用c/c++代码,即JNI(Java Native Interface),它提供了若干的API实现了Java和其他语言的通信.为方便android平台上使用JNI技术,提供了NDK开发包,可以将NDK理解为对JNI的进一步封装,方便开发使用罢了. JNI开发方式有多种,可以在Android 源码中开发,也可以利用其它工具,但都比较烦琐或者要下

详解Android studio中正确引入so文件的方法

相信很多朋友在使用Android studio开发中,遇到过如何引入第三方so文件的问题,然而第三方官方仅仅给出了ADT环境下的集成方式. Android studio中默认使用的是gradle编译方式,与ADT编辑方式不一样,那么so文件应当如何引入呢? 其实很简单.这里以集成JPUSH为例,看一下so文件如何引入到编译环境,最终到JNI直接可以调用该so文件. 首先,在我们的Module的根目录中建立libs目录,将jpush集成SDK中的so文件分别拷入,截图如下: 然后就是编写我们的bu

详解如何在Android Studio中添加RecyclerView-v7支持包

一直知道RecyclerView可以代替ListView.GridView使用,听说功能很强大,但还没有去学习过.今天想学习,没想到还没开始便撞墙了.输入Recycler,只有这两个东西,没有提示RecyclerView,说明支持包中没有. 最后一番百度后,终于解决(真不敢想象没有网络的情况下,怎么开发.怎么解决问题). 1.打开SDK Manager,在Extras树下找到Android Support Library,下载好支持包.RecyclerView在v7-21版本就出来了.我这里不用

Android Studio中导入module的方法(简单版)

1.把要导入成Mudle的项目修改成符合Library的格式 修改该项目中bulid.gradle文件中第一行代码 把 apply plugin: 'com.android.application' 修改为 apply plugin: 'com.android.library' 然后,修改AndroidManifiest.xml文件中配置信息,此处主要是把原来配置的项目Style等配置以及MainActivity配置删除,这样处理是为了防止重复.以下以一个我的Moudle文件的AndroidMa

android项目从Eclipse迁移到Android studio中常见问题解决方法

(1)将Eclipse项目导入到Android studio 中出现9-patch image问题解决方法: 在build.gradle里添加以下两句: aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false 用来关闭Android Studio的PNG合法性检查的,直接不让它检查. (2)Android Studio 错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface