netbeans OpenCV到JNI如何让它工作?

cnh2zyt3  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(171)

我正在特灵使用opencv和java来进行人脸检测,在这个过程中我发现了这个“JNI2OPENCV”文件....但是我对如何使它工作感到困惑,有人能帮助我吗?
http://img519.imageshack.us/img519/4803/askaj.jpg
下面是FaceDetection.java

class JNIOpenCV {
    static {
        System.loadLibrary("JNI2OpenCV");
    }
    public native int[] detectFace(int minFaceWidth, int minFaceHeight, String cascade, String filename);
}

public class FaceDetection {
    private JNIOpenCV myJNIOpenCV;
    private FaceDetection myFaceDetection;

    public FaceDetection() {
        myJNIOpenCV = new JNIOpenCV();
        String filename = "lena.jpg";
        String cascade = "haarcascade_frontalface_alt.xml";

    int[] detectedFaces = myJNIOpenCV.detectFace(40, 40, cascade, filename);
    int numFaces = detectedFaces.length / 4;

        System.out.println("numFaces = " + numFaces);
        for (int i = 0; i < numFaces; i++) {
            System.out.println("Face " + i + ": " + detectedFaces[4 * i + 0] + " " + detectedFaces[4 * i + 1] + " " + detectedFaces[4 * i + 2] + " " + detectedFaces[4 * i + 3]);
        }
    }

    public static void main(String args[]) {
        FaceDetection myFaceDetection = new FaceDetection();   
    }
}

有没有人能告诉我,我怎么才能让这个工作在Netbeans上??我试过谷歌,但在这个特定的主题上的帮助是非常meger。
我已经在netbeans项目中添加了整个文件夹作为Llibrary,当我试图运行该文件时,我得到了以下错误。
Exception in thread "main" java.lang.UnsatisfiedLinkError: FaceDetection.JNIOpenCV.detectFace(IILjava/lang/String;Ljava/lang/String;)[I at FaceDetection.JNIOpenCV.detectFace(Native Method) at FaceDetection.FaceDetection.<init>(FaceDetection.java:19) at FaceDetection.FaceDetection.main(FaceDetection.java:29) Java Result: 1 BUILD SUCCESSFUL (total time: 2 seconds)
有人能告诉我具体的处理方法吗?比如我要做的是什么?

rryofs0p

rryofs0p1#

如果您在Windows上使用JNI,Dependency Walker将是您的朋友。
但是,在我们开始之前,首先验证JRE是否可以通过添加以下内容找到您的JNIOpenCV.dll:System.out.println("java.library.path="+System.getProperty("java.library.path"));到静态构造函数块。
但是,我认为这里的问题不是找到您的JNIOpenCV.dll文件,而是找到它所依赖的文件。(只需将其拖到那里)并查看任何错误消息(msjava.dll除外--忽略它,这无关紧要)。我的直觉很可能是您需要MicrosoftVisualC/C++运行时库,请从VisualStudio网站下载它们并将它们放在与dll相同的文件夹中。
祝你好运!

vm0i2vca

vm0i2vca2#

你应该看一下这里,有几个例子是用JNI连接起来的:
http://code.google.com/p/android-opencv/

34gzjxbg

34gzjxbg3#

我已经使用OpenCV 2.3.1和Eclipse(而不是Netbeans)创建了一个可工作的Android示例。
这个小的tutorial描述了一个跟随手电筒的机器人。这个页面包含了必要的步骤和源代码。

相关问题