【问题标题】:Opencv samples not working in Android StudioOpencv 示例在 Android Studio 中不起作用
【发布时间】:2019-02-13 10:11:33
【问题描述】:

我安装了 Android Studio 3.1.4 并下载了 OpenCV-2.4.11-android-sdk。对于第一步,我尝试运行 OpenCV SDK 附带的示例,例如人脸检测。当我在 Android Studio 中构建项目时,我收到消息:

错误:您的项目包含 C++ 文件,但未使用受支持的 本机构建系统。考虑使用 CMake 或 ndk-build 集成。 欲了解更多信息,请访问: https://d.android.com/r/studio-ui/add-native-code.html

在此站点上,必须安装其所说的 NDK、CMake 和 LLDB。但它已经是了。

知道如何解决这个问题吗?

【问题讨论】:

  • 值得注意的是,Android Studio 上的任何示例或文档都不支持 OpenCV - 它仍然是基于剪辑的。让 OpenCV 在 Studio 中与 NDK 一起工作是一个不断变化的问题——这里有其他地方的讨论值得一读,例如stackoverflow.com/q/40948953/334402 ,但我从来没有找到一个“简单”的答案。

标签: android opencv opencv4android


【解决方案1】:

由于您在项目目录中拥有 C++ 代码和 Makefile,在这种情况下,您只需将 Gradle 链接到本机库:

  1. 在您的项目窗格中,右键单击您的模块,然后选择 Link C++ 使用 Gradle 进行项目。

  2. 下拉列表 中选择 CMakendk-build,具体取决于您的项目

    一个。如果您选择 CMake,请在项目中指定 CMakeLists.txt 脚本

    b.如果您选择 ndk-build,请指定 Android.mk

PS:Android.mk位于;应用程序/构建/中间体/ndk/调试。

【讨论】:

  • 谢谢。但是我怎么知道我需要 CMake 还是 ndk-build?它是一个来自 opencv sdk 的示例项目。 CMakeLists.txt 在哪里?
  • 使用 ndk-build。你可以参考这里stackoverflow.com/questions/39589427/…
【解决方案2】:

就我而言,我的 local.properties 文件中缺少 ndk 的位置。请在 local.properties

中添加带有 android sdk 的 ndk 路径
ndk.dir=/Path to the Sdk/Android/sdk/ndk-bundle
sdk.dir=/Path to the Ndk directory/Android/sdk

【讨论】:

    【解决方案3】:

    它不起作用。现在我创建了一个新项目。那么:

    1. 我点击了 File->New->Import Module 并从我的 OpenCV-android-sdk 添加了 java 文件夹。

    2. 文件->项目结构->app->依赖-> +模块依赖。我添加了 openCVLibrary2411

    3. 右键app:新建->文件夹->JNI文件夹->更改文件夹位置:我改成了“src/main/jniLibs/”

    4. 我将“OpenCV-android-sdk\sdk\native\libs”(4个文件夹:armeabi、armeabi-v7a、mips、x86)的内容复制到“src/main/jniLibs/”中

    5. 右键单击Packages:openCVLibrary2411->Link C++ Project with Gradle:构建系统:ndk-build,项目路径:“[MyFolder]\OpencvTest7\app\build\intermediates\ndk\debug”

    6. 在我添加的 MainActivity.java 之后

    setContentView(R.layout.activity_main);

    if(OpenCVLoader.initDebug()){

            Toast.makeText(getApplicationContext(), "opencv loaded successfully.", Toast.LENGTH_SHORT).show();
        }else
        {
            Toast.makeText(getApplicationContext(), "could not load opencv .", Toast.LENGTH_SHORT).show();
        }
    

    当我运行项目时,我得到了 Toast ""could not load opencv ."。

    【讨论】:

    • 最好将其添加为问题的更新,而不是作为答案。
    猜你喜欢
    • 1970-01-01
    • 2015-04-25
    • 2014-12-04
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多