Android - OpenCV错误:无法加载OpenCV的信息库

时间:2016-05-12 07:42:15

标签: java android opencv

我已经在Android Studio(https://www.learn2crack.com/2016/03/setup-opencv-sdk-android-studio.html)中设置了OpenCV SDK,但似乎我收到了这种错误消息。

05-12 03:30:08.819 5480-5480/my.xxxxx I/art: Late-enabling -Xcheck:jni
05-12 03:30:08.925 5480-5480/my.xxxxx D/OpenCV/StaticHelper: Trying to get library list
05-12 03:30:08.926 5480-5480/my.xxxxx E/OpenCV/StaticHelper: OpenCV error: Cannot load info library for OpenCV
05-12 03:30:08.926 5480-5480/my.xxxxx D/OpenCV/StaticHelper: Library list: ""
05-12 03:30:08.926 5480-5480/my.xxxxx D/OpenCV/StaticHelper: First attempt to load libs
05-12 03:30:08.926 5480-5480/my.xxxxx D/OpenCV/StaticHelper: Trying to init OpenCV libs
05-12 03:30:08.926 5480-5480/my.xxxxx D/OpenCV/StaticHelper: Trying to load library opencv_java3
05-12 03:30:08.926 5480-5480/my.xxxxx D/OpenCV/StaticHelper: Cannot load library "opencv_java3"

我已将opencv_java3添加到JNI文件夹中。

enter image description here

6 个答案:

答案 0 :(得分:9)

如果有人还在(2020年3月)搜索此错误-

 E/OpenCV/StaticHelper: OpenCV error: Cannot load info library for OpenCV

并结束于此StackOverflow讨论,这是OpenCV贡献者对其站点本身的有益说明。

忽略此错误消息。 “信息库”用于特殊的Android 配置,例如具有CUDA支持的版本。

请在此处查看此问题(当前处于打开状态)-https://github.com/opencv/opencv/issues/15567

答案 1 :(得分:4)

大多数在线教程会告诉您只在armeabi-v7a文件夹中添加x86_64jniLibs,但这可能会导致最近版本的OpenCV出错。下面简要介绍一下我在遇到同样问题时用来修复此错误的一些调整。

解决方案1:

确保放置OpenCV库的JNI文件夹名为jniLibs

jniLibs Folder

解决方案2:

OpenCV-android-skd/sdk/native/libs中找到的目录 ALL 复制到jniLibs文件夹。

jniLibs folder with all OpenCV libraries added

<强>推荐:

即使这是涉及模拟器的单独问题,您还应该在应用程序模块Gradle文件中添加FD3发布的代码段。这样可以防止在尝试在模拟器上运行应用程序后发生INSTALL_FAILED_NO_MATCHING_ABIS错误。

答案 2 :(得分:2)

您可以尝试将opencv_java3包含到jniLibs文件夹中,如下所示:

Android Studio Image

答案 3 :(得分:1)

一年后,我发现这对我有用。在您的应用程序模块gradle文件中,添加:

splits {
        abi {
            enable true
            reset()
            include 'x86', 'armeabi-v7a', 'x86_64'
            universalApk true
        }
    }

这应该放在Android括号中。显然,调整你可能需要的包括。

答案 4 :(得分:0)

可能缺少 Android NDK 附带的 libc++_shared.so 库,如 https://stackoverflow.com/a/66692717/14019579 中所述。

解决方案

  1. 下载整个 ndk 或下载 libc++_shared.so
  2. 将此库复制到所有子文件夹。 Your proj structure should look like this now

在第一个链接适用于 Studio V4.2.1 和 OpenCV 4.5.2 之后执行此操作

答案 5 :(得分:0)

是否有必要使用 OpenCV 3.0?最新的 OpenCV SDK 易于安装。不需要预编译SDK。它使用 CMake 链接到 SDK。您可以在以下网站下载:https://opencv.org/releases/

我将尝试了解如何在 android studio 中导入 openCV。

  1. 首先,您必须创建一个 JNI 项目。如您所知,OpenCV 是一个 C++ 库。

  2. 然后,导入 SDK,文件 > 新建 > 导入模块...

    并选择 OpenCV SDK 中的“sdk”文件夹。

  3. 打开setting.gradle,添加这段代码告诉项目你有一个opencv模块。

include "opencv"
project(":opencv").projectDir = file("sdk")
  1. 编辑“app”文件夹下的 build.gradle 以在 CMake 中添加 OpenCV_DIR 参数,您的 OpenCV 本机代码所在的位置。
arguments "-DOpenCV_DIR=" + file('../sdk').absolutePath + "/native/jni",
        "-DANDROID_TOOLCHAIN=clang",
        "-DANDROID_STL=c++_shared"
dependences {
...
implementation project(':opencv')
}
  1. 在 app/src/main/cpp/CMakeLists.txt 中添加代码告诉 CMake 安装 OpenCV 模块
set(ANDROID_OPENCV_COMPONENTS "opencv_java" CACHE STRING "")
message(STATUS "ANDROID_ABI=${ANDROID_ABI}")
find_package(OpenCV REQUIRED COMPONENTS ${ANDROID_OPENCV_COMPONENTS})

target_link_libraries(${PROJECT_NAME} ${ANDROID_OPENCV_COMPONENTS})
  1. 完成。您现在可以使用它。

您可以在此链接中找到带图片的详细教程:https://kcwong-joe.medium.com/how-to-import-opencv-4-5-2-in-android-studio-d9114179628f