我想将 OpenCV 用于我目前正在开发的 Android 应用程序,用 Java 编写。
要设置 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'
我真的看不出我在哪里做错了,谁能帮我解决这个问题?