【问题标题】:JavaCV with android ndkJavaCV 与 android ndk
【发布时间】:2014-06-10 12:06:42
【问题描述】:

我正在开发使用 javacv 从图像列表创建视频的 android 应用程序,我做了以下所有操作:

按照此页面上的说明进行操作:http://developer.android.com/training/basics/firstapp/

  1. 转到文件 > 新建 > 文件夹,选择您的项目作为父文件夹,键入“libs/armeabi”作为文件夹名称,然后单击完成。
  2. 将 javacpp.jar 和 javacv.jar 复制到新创建的“libs”文件夹中。
  3. 将javacv-android-arm.jar、opencv-2.4.8-android-arm.jar、ffmpeg-2.1.1-android-arm.jar中的所有*.so文件直接解压到新建的“libs”中/armeabi" 文件夹,而不创建 JAR 文件中的任何子目录。
  4. 导航到项目 > 属性 > Java 构建路径 > 库,然后单击“添加 JAR...”。
  5. 从新创建的“libs”文件夹中选择 javacpp.jar 和 javacv.jar。

我几乎尝试了一切,我尝试编辑 build.gradle 文件以使用 ffmpeg&opencv&javacv&jacacpp 编译,它应该包含:

我已经使用了带有简单示例的 android ndk 并且它正在工作,但我不知道如何使用 javacv,我不知道如何在我的活动或 test.c 中实现这样的新功能?

在我的活动中也包含了 c 库

但我总是收到此错误:UnsatisfiedLinkError

【问题讨论】:

  • 您只需将 jar 导入到您的项目中。如果您使用 JavaCV,这就是您需要做的所有事情。它是 OpenCv 的 Java 包装器,因此您不需要 NDK。
  • 感谢您的回复,我确实在 lib 文件夹中添加了 javacv 和 javacpp,但我仍然收到相同的错误,我将 .so 文件放入 libs/armbie 但相同

标签: android android-ndk javacv


【解决方案1】:

感谢用户 phOb 的回复,我设法将 JavaCV 包含到我的 Android Studio 项目中,并解决了我遇到的错误,例如 Marcel

  1. 在文件夹 app/src/main 中名为 app 的项目模块中,我创建了文件夹 jniLibs 并将文件夹 armeabi 移到那里 包含我从 ffmpeg-android-arm.jar 和 opencv-android-arm.jar 中提取的所有 *.so 文件
  2. 在我的 build.gradle 中,我将这些行添加到了 android 部分

    productFlavors {
    arm {
        ndk {
            abiFilter "armeabi"
            }
        }
    }
    
  3. 在依赖部分我包括这些行

    compile files('libs/ffmpeg.jar')
    compile files('libs/javacpp.jar')
    compile files('libs/javacv.jar')
    compile files('libs/opencv.jar')
    

就是这样。希望这对其他人有帮助

【讨论】:

    【解决方案2】:
    1. ffmpeg-2.1.1-android-arm.jar、2.javacpp.jar、3.javacv.jar、4.javacv-android-arm.jar、5.opencv-2.4.8-android-arm.jar .这些是您需要在项目中添加的唯一 jar。

    此外,您还需要在开发机器上设置一个 sys 变量。 这一步解释here

    只需按照本指南中的系统路径设置步骤进行操作即可。然后只需将上述 jar 导入您的项目。应该足够了。

    【讨论】:

    • ffmpeg-2.1.1,ffmpeg-2.1.1,javacv-android-arm.jar 没有作为 jars 添加到 libs 文件夹中,但是我们将 .so 文件复制到“libs/armeabi”中?
    • 谢谢,我点击了这个链接,我在丢失 .so 文件时出错
    • 您是否设置了系统变量并安装了 JavaCv?按照链接中的步骤 2-5,然后添加我列出的罐子。它应该像魅力一样工作!
    【解决方案3】:

    您在问题中提到了 gradle。 使用 gradle android-plugin(和 Android Studio),默认情况下,您必须将 .so 文件放入 jniLibs 而不是 libs

    这意味着您应该将所有 .so 文件从 -android-*.jar 文件中提取到与其目标架构对应的文件夹中:jniLibs\armeabijniLibs\x86

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 2011-06-25
      • 2017-07-09
      • 2016-01-04
      • 2016-10-13
      相关资源
      最近更新 更多