我在台式计算机上使用C ++开发了一个OpenCV应用程序,其中一切都按预期工作。 然后我在使用android NDK的Android应用程序中包含了C ++代码。 它构建并运行,但结果与我桌面上的结果不同。 调试后,我发现以下行有所不同: 事实上,medianBlur似乎 ...
提示:本站收集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'
我真的看不到我做错了什么,有人可以帮我吗?
您是否正在以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的以下步骤。
步骤(6)是因为Android Studio期望app/src/main/jniLibs
本机libs,而不是较早的libs
文件夹。 对于Android OpenCV的新手,请不要错过以下步骤
static{ System.loadLibrary("opencv_java"); }
static{ System.loadLibrary("opencv_java"); }
谢谢大家的帮助,现在我整理好了!
实际上,我要做的是按照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'
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.