【问题标题】:OpenCV could not load needed library (face detection)OpenCV 无法加载所需的库(人脸检测)
【发布时间】:2016-01-26 18:57:57
【问题描述】:

我正在使用人脸检测 open cv for android 示例。

构建时没有错误,但是在部署示例时出现运行时错误

java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1940]: 150 could not load needed library 'libopencv_java3.so' for 'libdetection_based_tracker.so' (load_library[1095]: Library 'libopencv_java3.s0' not found)

我已将 ndk 添加到项目中,并将打开的 cv 库与示例链接。

【问题讨论】:

  • 你这里有一个链接器错误。这是您尝试制作的第一个 openCV 程序吗?如果是这样,您的安装可能是错误的,或者 java 没有在正确的位置找到'libopencv_java3.so'。此外,最后它提到了Library 'libopencv_java3.s0' not found。我认为s0 不应该是“0”。但是我很少用java。
  • 在您的 Android.mk 中,您可能有 OPENCV_LIB_TYPE:=SHARED。我建议您尝试改用STATIC

标签: android c++ opencv android-ndk


【解决方案1】:

尝试添加System.loadLibrary("opencv_java3");。对我来说效果很好

【讨论】:

    【解决方案2】:

    您收到此错误是因为 android 在 /jniLibs 文件夹中找不到 libdetection_based_tracker.so

    解决办法是

    1. /jniLibs 中的 opencv-sdk 复制 native/libs 文件夹
    2. 在jni文件夹中制作Android.mk文件和Application.mk文件
    3. 在您的 build.gradle 中复制以下行

    sourceSets.main {

    jni.srcDirs = [] //disable automatic ndk-build call
    jniLibs.srcDir 'src/main/jniLibs'
    

    }

    构建类型 { ... } 并添加

    默认配置 {...

    ndk{
        moduleName "libdetection_based_tracker"
    }
    

    }

    4.将libdetection_based_tracker.so添加到jniLibs

    【讨论】:

      【解决方案3】:

      进行这些更改后工作正常。

      我得到图像的脸被矩形包围

      注意:- 1. 在 Android Studio 中,转到 File > New > Import-Module 并选择 /sdk 并等待同步完成。 2.不要像大多数教程建议的那样导入/sdk/java。

      【讨论】:

        猜你喜欢
        • 2012-02-04
        • 2013-05-24
        • 1970-01-01
        • 1970-01-01
        • 2014-01-31
        • 2012-04-15
        • 2012-03-29
        • 2017-05-29
        • 2016-05-05
        相关资源
        最近更新 更多