在Android Studio中 使用 OpenCV

重要的事说三遍:

使用新SDK前,一定要阅读说明文档!

使用新SDK前,一定要阅读说明文档!

使用新SDK前,一定要阅读说明文档!

本来很简单一件事,没看说明就去做了。然后出问题了:

问题1:显示OpenCV Manager package 没发现。是否安装。

问题2:E/OpenCV/StaticHelper: OpenCV error: Cannot load info library for OpenCV
             D/OpenCV/StaticHelper: Library list: ""

问题3:java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found
……

百度,得到一堆垃圾经验,浪费了1天时间。最后还是找的说明文档才顺利解决!

说的也是,谁会把说明放到build.gradle文件中呢?“OpenCV android sdk”就是这个干的!(汗!)

去OpenCV官网,下载 android sdk。解压缩到任意文件夹。(具体操作略过……)

打开OpenCV-android-sdk\sdk下的build.gradle文件。以下说明是对该文件描述的具体操作:

首先。新建项目。(任意项目,没有必要如XX说说必须用C++)

以下是关于将OpenCV集成到现有Android Studio应用程序项目的注意事项
1.文件位于/sdk目录中(靠近“etc”、“java”、“native”子目录)

2.将模块添加到Android Studio应用程序项目:

方法1.Android Studio方式:将几乎所有的OpenCV Android SDK复制到您的项目中,~200Mb。
     导入模块:菜单->“文件”->“新建”->“新的模块”->“导入渐变项目”: 
     (Import module: Menu -> "File" -> "New" -> "New Module" -> "Import Gradle project":)
      源目录:选择“sdk”目录
     Module name: ":opencv"(没有找到输入框!导入后是sdk。重命名为"opencv",冒号不可以输入。同时在settings.gradle文件中要讲include ':sdk'修改为include ':opencv')
方法2.或者从OpenCV Android SDK附加库模块 
(不复制到应用程序项目目录,允许在项目之间共享同一模块)
 编辑“settings.gradle”并添加以下行:
   def opencvsdk=''
 也可以将上面的声明放入gradle.properties 件(主目录中的文件),但没有“def”和撇号('):   

  opencvsdk=
  include ':opencv'
  project(':opencv').projectDir = new File(opencvsdk + '/sdk')

3.将依赖项添加到应用程序模块:
方法1.Android Studio方式:
“打开模块设置”(F4)->“依赖项(Dependencies)”选项卡 
-或将“project(':opencv')”依赖项添加到app/build.gradle
 dependencies {
       implementation fileTree(dir: 'libs', include: ['*.jar'])
       ...
       implementation project(':opencv')
   }

4.在使用之前加载OpenCV本机库:
-避免使用“OpenCVLoader.initAsync()”方法-已弃用
 它可以加载不同版本的库(来自opencvandroid管理器,它单独安装在设备上)
-使用“System.loadLibrary("opencv_java4")”或“OpenCVLoader.initDebug()”
添加精确的API以加载OpenCV本机库

5.Native C++ 支持(只需在本机应用程序代码中使用OpenCV):
-在app/CMakeLists.txt中使用find_package():
  find_package(OpenCV 3.4 REQUIRED java)
  ...
  target_link_libraries(native-lib ${OpenCV_LIBRARIES})
-在 app/build.gradle添加“OpenCV_DIR”,并启用C++异常/ RTTI支持
有关CMake选项的文档:https://developer.android.com/ndk/guides/cmake.html
 defaultConfig {
       ...
       externalNativeBuild {
           cmake {
               cppFlags "-std=c++11 -frtti -fexceptions"
               arguments "-DOpenCV_DIR=" + opencvsdk + "/sdk/native/jni" // , "-DANDROID_ARM_NEON=TRUE"
           }
       }
   }
-(可选)限制/筛选要构建的abi(app/build.gradle的“android”范围):
https://developer.android.com/studio/build/gradle-tips.html 
(为每个ABI配置单独的APK)
 splits {
      abi {
           enable true
           universalApk false
           reset()
           include 'armeabi-v7a' // , 'x86', 'x86_64', 'arm64-v8a'
       }
   }
 

接下来验证:

1.复制\OpenCV-android-sdk\samples\camera-calibration\src\org\opencv\samples\cameracalibration文件夹下全部文件,到前面新建项目的MainActivity.java所在文件夹。

2.修改复制过来的package org.opencv.samples.cameracalibration;为MainActivity.java的package

3.复制\OpenCV-android-sdk\samples\camera-calibration\res文件夹下全部文件到前面新建项目的res文件夹

4.修改项目AndroidManifest.xml文件:

修改为
在的后面添加:






运行。 成功!

------------------------------------

最后,介绍更简单的方法:

打开Android studio,选“打开已经存在的Android studio项目。

找到OpenCV-android-sdk文件夹,选择“samples”。所有的示例都运行良好!

在Android Studio中 使用 OpenCV_第1张图片

在Android Studio中 使用 OpenCV_第2张图片

 

你可能感兴趣的:(计算机视觉,java,android,android,studio,opencv)