Android 如何在React Native中使用OpenCV

Android 如何在React Native中使用OpenCV,android,react-native,opencv,Android,React Native,Opencv,我发现的所有类似问题或多或少都没有得到回答。 我想检测边缘并改变图像的透视图,OpenCV似乎是正确的选择。谷歌搜索上弹出了一个指南,很长,很混乱。更新:实际上,放弃所有这些。以下内容适用于Android Studio+java。但是,这篇文章很好地概述了REACT需要做的所有工作,包括简单的步骤: 如果你想在android studio中使用openCV 下载地址: 在OpenCV android sdk>sdk中有一个build.gradle文件,其中包含如何在android Studio

我发现的所有类似问题或多或少都没有得到回答。
我想检测边缘并改变图像的透视图,OpenCV似乎是正确的选择。谷歌搜索上弹出了一个指南,很长,很混乱。

更新:实际上,放弃所有这些。以下内容适用于Android Studio+java。但是,这篇文章很好地概述了REACT需要做的所有工作,包括简单的步骤:

如果你想在android studio中使用openCV

  • 下载地址:

  • 在OpenCV android sdk>sdk中有一个build.gradle文件,其中包含如何在android Studio中使用OpenCV的说明。这是一份副本:

  • 关于将OpenCV集成到现有Android Studio的说明 应用程序项目如下(应用程序“应用程序”模块应存在)。 此文件位于/sdk目录中(靠近“etc”、“java”、“native”子目录) 将模块添加到Android Studio应用程序项目中:

    • Android Studio方式: (将几乎所有OpenCV Android SDK复制到您的项目中,~200Mb)

      导入模块:菜单->“文件”->“新建”->“模块”->“导入梯度项目”: 源目录:选择此“sdk”目录 模块名称:“:opencv”

    • 或从OpenCV Android SDK附加库模块 (不复制到应用程序项目目录,允许在项目之间共享同一模块)

      编辑“settings.gradle”并添加以下行:

      def opencvsdk='' 您可以将上述声明放在gradle.properties文件中(包括主目录中的文件), 但是没有'def'和撇号('):opencvsdk= 包括“:opencv” project(':opencv')。projectDir=新文件(opencvsdk+'/sdk')

      将依赖项添加到应用程序模块:

    • Android Studio方式: “打开模块设置”(F4)->“依赖项”选项卡

    • 或者在app/build.gradle中添加“project(':opencv')”依赖项:

      依赖关系{ 实现文件树(目录:“libs”,包括:['*.jar']) ... 实施项目(“:opencv”) }

      在使用之前加载OpenCV本机库:

    • 避免使用“OpenCVLoader.initAsync()”方法-不推荐使用该方法 它可能会加载不同版本的库(来自OpenCV Android Manager,它单独安装在设备上)

    • 使用“System.loadLibrary(“opencv_java4”)或“OpenCVLoader.initDebug() TODO:添加准确的API以加载OpenCV本机库

      本地C++支持(仅在本地应用程序代码中使用OpenCV):

    • 使用app/CMakeLists.txt中的find_package():

      find_包(OpenCV 3.4必需java) ... 目标链接库(本机库${OpenCV\u库})

    • > Po>添加“OpenCVIdir”,并通过App/Bug开发C++异常/ RTI支持 关于CMake选项的文档:https:developer.android.com/ndk/guides/CMake.html

      默认配置{ ... 外部构建{ 克马克{ cppFlags“-std=c++11-frtti-FEExceptions” 参数“-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)

      分裂{ 阿比{ 启用真 universalApk错误 重置() 包括“armeabi-v7a”、“x86”、“x86_64”、“arm64-v8a” } }

    注意事项:

  • 使用OpenCV将极大地增加生成的APK(对于一个小项目,我说的是50mb),因此请确保没有其他方法可以做到这一点

  • 我以前从未使用过React for Android,所以我猜这些步骤大致相同

  • 有一些示例项目展示了如何在Android中使用C++。查看这些,了解在完成上述设置后如何运行代码。我的建议是,做一个新的项目,选择本地C++,因为它为你提供了大部分的安装。
    希望这有点帮助

    我终于能够将OpenCV与React Native一起使用了。由于React Native不正式支持OpenCV,我们将不得不使用。注意,您必须使用Java才能使用OpenCV功能

  • 下载OpenCV Android SDK
  • 解压缩zip文件
  • 打开Android Studio并打开React原生项目中的“Android”文件夹
  • 文件>新建>导入模块
  • 选择OpenCV android sdk/sdk/java
  • 将模块名称更改为
    opencv
    (或任何其他名称),然后取消选中下一屏幕上的所有选项
  • 从左上角,将显示从
    Android
    更改为
    Project
  • 打开
    opencv
    模块的
    build.gradle
  • apply plugin:'com.android.application'
    更改为
    apply plugin:'com.android.library'
    (第一行)
  • 删除此行
    applicationId“org.opencv”
  • 文件>项目结构并单击左侧的依赖项
  • 选择
    app
    并单击
    +
    然后选择模块依赖项并选择
    opencv
  • android/app/src/main/
    中创建一个名为
    jniLibs的文件夹
  • opencvandroid sdk/sdk/native/libs的内容复制到
    jniLibs
  • 如果您使用的是
    react native camera
    ,您的应用程序将无法生成。要修复此问题,请在
    android/app/build.gradle
  • 现在按照步骤7进行操作,以结束
  • 完成后,打开
    RNOpenCvLibraryModule.java
  • 您在
    @ReactMethod
    下编写的任何函数都可以从Javascript访问
  • 范例
  • public void toGrayscale(字符串imageAsBase64,Callback errorCallback,Callback successCallback){
    试一试{
    //在这里做你的事情,比如Imgproc.cvtColor(mat,mat,Imgproc.CO