使用opencv-android从Android调用通用OpenCV方法

时间:2011-02-26 08:22:50

标签: android opencv android-ndk

我成功安装了opencv-android插件,我也可以构建和运行cvcamera示例应用程序。我有一个opencv项目也包含在eclipse中作为一个库项目。但是,我对如何从我的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函数。我可以忽略哪些步骤?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

#include <opencv2/highgui/highgui.hpp>