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
- 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库})
- (可选)限制/筛选要生成的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与React Native一起使用了。由于React Native不正式支持OpenCV,我们将不得不使用。注意,您必须使用Java才能使用OpenCV功能
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
RNOpenCvLibraryModule.java
@ReactMethod
下编写的任何函数都可以从Javascript访问public void toGrayscale(字符串imageAsBase64,Callback errorCallback,Callback successCallback){
试一试{
//在这里做你的事情,比如Imgproc.cvtColor(mat,mat,Imgproc.CO