繁体   English   中英

在Android Studio中,findLibrary在OpenCV4Android中返回null

findLibrary returned null with OpenCV4Android in Android Studio

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想将OpenCV用于目前正在使用Java编写的Android应用程序。

要设置OpenCV的,我是严格遵循步骤上解释这个页面 ,以及对这个 (没有成功尝试这两种解决方案)。 然后,当我让我的项目重建时,它可以工作,但是当我让我的代码运行时,在尝试执行以下操作时失败:

fdetector = FeatureDetector.create(FeatureDetector.SURF);

我得到的错误是java.lang.UnsatisfiedLinkError: Native method not found: org.opencv.features2d.FeatureDetector.create_0:(I)J与上述问题页面中的相同。 我尝试了此页面上提出的所有解决方案,但没有一个对我有用。

我确实已经安装了JNI,所以我想这不是问题。 或m我的设置如下:

-app
    |-libs (with my other app libraries, including javacv.jar)
    |-src
         |-main
               |-java (with my code)
               |-res
               |-jniLibs (with the .so files from the OpenCV's sdk\native\libs\x86)
         |-build.gradle
-libs
     |-opencv
             |-build
             |-jniLibs (with the same .so files as I was not sure where to put them)
             |-res
             |-src
             |-build.gradle

我的应用程序的build.gradle包含以下依赖项:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile fileTree(dir: 'libs', include: ['*.java'])
compile fileTree(dir: 'libs', include: ['*.so'])
compile 'com.android.support:appcompat-v7:21.0.2'
compile project(':libs:opencv')
}

opencv的build.gradle包含以下sourceSets:

sourceSets {
main {
  manifest.srcFile 'AndroidManifest.xml'
  java.srcDirs = ['src']
  resources.srcDirs = ['src']
  res.srcDirs = ['res']
  aidl.srcDirs = ['src']
  jniLibs.srcDirs = ['jniLibs']
}
}

我的settings.gradle包含一个include ':libs:opencv'

我真的看不到我做错了什么,有人可以帮我吗?

5 个回复

您是否正在以Java静态状态加载OpenCV库 如果没有,请将其放在您的活动中:

static { 
   System.loadLibrary("opencv_java"); //the name of the .so file, without the 'lib' prefix
}

您需要通过对local.properties文件和Build.gradle进行一些更改来在Android Studio中包括NDK支持。 这是一个详细显示如何在Android Studio上构建NDK应用程序的视频https://www.youtube.com/watch?v=0fEtrekNcOo

在Android Studio中使用Android OpenCV sdk的以下步骤。

  1. 从[OpenCV.org] [1] 下载适用于Android的最新OpenCV sdk,然后解压缩zip文件。
  2. 将OpenCV导入到Android Studio中 ,从文件->导入模块中 ,在解压缩的opencv存档中选择sdk / java文件夹。
  3. 更新导入的OpenCV模块下的build.gradle以更新4个字段以匹配您的项目build.gradle a)compileSdkVersion b)buildToolsVersion c)minSdkVersion和4)targetSdkVersion。
  4. 通过Application-> Module Settings 添加模块依赖关系 ,然后选择Dependencies选项卡。 单击底部的+图标,选择“ 模块依赖关系”,然后选择导入的OpenCV模块。
  5. sdk / native下的libs文件夹复制app / src / main下的Android Studio。
  6. 在Android Studio中, 将复制的libs目录重命名为jniLibs ,我们就完成了。

步骤(6)是因为Android Studio期望app/src/main/jniLibs本机libs,而不是较早的libs文件夹。 对于Android OpenCV的新手,请不要错过以下步骤

  • 包括static{ System.loadLibrary("opencv_java"); } static{ System.loadLibrary("opencv_java"); }
  • 对于步骤(5),如果您忽略任何平台库(如x86),请确保您的设备/仿真器不在该平台上。

谢谢大家的帮助,现在我整理好了!

实际上,我要做的是按照G3M视频中的指令https://www.youtube.com/watch?v=0fEtrekNcOo向我的项目添加ndk功能,即在我的应用程序的local.properties中添加以下行:

ndk.dir=D\:\\AndroidSDK\\ndk

然后,按照Kiran的建议,我按照此设置说明进行了操作

最后,我能够进行bonnyz建议的静态调用以获取“ opencv_java”库:

static { 
    System.loadLibrary("opencv_java"); //the name of the .so file, without the 'lib' prefix
}

经过长时间的研究,我使用以下给出的代码对其进行了修复:

sourceSets.main {
    jni.srcDirs = []
    jniLibs.srcDir 'src/main/libs'
}
1 medianBlur无法在opencv4android中工作

我在台式计算机上使用C ++开发了一个OpenCV应用程序,其中一切都按预期工作。 然后我在使用android NDK的Android应用程序中包含了C ++代码。 它构建并运行,但结果与我桌面上的结果不同。 调试后,我发现以下行有所不同: 事实上,medianBlur似乎 ...

3 opencv4android中的filter2d

我正在尝试使用filter2d在opencv4android中编写一个简单的代码。 但在调用函数'filter2d'后,在目标mat中,我得到零(它没有正确运行该函数)。 结果应该是: 我尝试更改源代码和内核的深度/类型,但它没有帮助。 这是我的代码: 谁能告诉我这 ...

4 BoVW模型在openCV4Android中的实现

我正在开发一个Android应用程序,该程序可以从捕获的所有照片中提取视觉单词,我是Java开发人员,并且没有在C ++和OpenCV中进行实验。阅读了所有opencv4android教程和Java API之后,我没有找到如何在android中实现BoVW模型 opencv4android ...

7 Qt和OpenCV4Android

这是您的第一篇文章,我一直在使用Qt和opencv,并且是opencv4android的新手,我想为使用opencv的android开发Qt应用程序,但是我不知道该怎么做。 我看到了这篇文章: http : //amin-ahmadi.com/2015/06/23/opencv-qt-an ...

8 如何在OpenCV4Android中添加额外的模块?

我现在正在使用NDK来实现图像处理方法,并且我想将一些额外的模块(例如xphoto和matlab)导入OpenCV,以便可以将这些额外的库包含到我的cpp文件中。 我已经下载了额外的模块。 这些模块如下所示: 并且modules文件夹如下所示: 由于我不太熟悉配置CMak ...

9 在OpenCv4Android中存储测试数据

这个问题已经在这里有了答案: Android OpenCV二进制文件是否具有数据持久性功能? 2个答案 有什么方法可以像使用C ++的OpenCv中的FileStorage类一样在OpenCv4Android中保存测试数据(在Java中不是本机)? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM