【问题标题】:Calling Generic OpenCV methods from Android with opencv-android使用 opencv-android 从 Android 调用通用 OpenCV 方法
【发布时间】:2011-07-04 19:03:48
【问题描述】:

我成功安装了 opencv-android 插件,我也可以构建和运行 cvcamera 示例应用程序。我也将 eclipse 中的 opencv 项目作为库项目包含在内。但是,我对如何在我的 android 应用程序中执行任意 opencv 方法感到困惑。

例如,我让我的应用程序拍照并保存。然后,我想让 opencv 加载该图像,以便对其进行一些处理。作为第一步,我正在尝试将该图像加载到 opencv Mat 中。因此,我根据在 cvcamera 示例中看到的代码创建了以下类:

import com.opencv.jni.Mat;
public class ExtraOpencvJNI {
    static {
        try {
            System.loadLibrary("android-opencv");
        } catch (UnsatisfiedLinkError e) {
            throw e;
        }
    }
    public final static native Mat imread(String jarg1);

}

然后,在我的 android java 代码中,我尝试执行:

Mat img = ExtraOpencvJNI.imread("<path_to_img>");

但是,当我执行上述 java 代码时,我得到一个 UnsatisfiedLinkError: imread。我知道我一定误解了关于 opencv-android 库如何工作的基本知识,但我找不到其他任何东西来解释如何使用 android 库调用基本的 opencv 函数。我忽略了哪些步骤?

【问题讨论】:

  • 我最终弄清楚了如何让这一切正常工作 - 基本上你必须用 C++ 编写所有 openCV 内容,然后像 cvcamera 示例中一样通过 JNI 调用它。我希望 opencv android 会像 python opencv API 一样公开一个完全 java opencv API,但没有运气。

标签: android opencv android-ndk


【解决方案1】:

这应该不是问题。我可以在我的应用程序中进行 imread。 我猜你忘了

#include &lt;opencv2/highgui/highgui.hpp&gt;

【讨论】:

    【解决方案2】:

    您可以尝试使用 JavaCV,它就是这样做的:

    http://code.google.com/p/javacv/

    【讨论】:

    • 很有趣,我没有收到关于您的评论的通知,很抱歉耽搁了这么久。是的,它适用于 Android
    【解决方案3】:

    您需要在 JNI 文件 (.i) 中有相应的 imread 代码位。例如,在 cvcamera 示例中,有 processor.i 和其他一些。据我记得,我还没有在那里看到imread。您应该使用给定的方法,将 YUV 图像从 androids 相机移动到一个池中,以便由用 c++ 编写的代码进行处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-06
      • 2013-02-01
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多