OpenCV для JNI, как заставить это работать? - PullRequest
0 голосов
/ 14 марта 2010

Я пытаюсь использовать 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 ?? Я пробовал Google, но помощь по этой конкретной теме очень скудная.

Я добавил всю папку как Llibrary в проект NetBeans и, когда я пытаюсь запустить файл, я получаю следующие файлы.

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)

Может кто-нибудь сказать мне точный способ работы с этим? как то, что все, что я должен сделать?

Ответы [ 3 ]

0 голосов
/ 24 августа 2010

Вы должны посмотреть здесь, несколько примеров подключены с JNI:

http://code.google.com/p/android-opencv/

0 голосов
/ 21 декабря 2011

Я создал работающий пример Android, используя OpenCV 2.3.1 и Eclipse вместо Netbeans.

Этот небольшой учебник описывает робота, следующего за факелами.Страница содержит необходимые шаги и исходный код.

0 голосов
/ 17 марта 2010

Если вы используете JNI в Windows, Dependency Walker станет вашим другом.

Но прежде чем мы перейдем к этому, сначала убедитесь, что JRE может найти ваш JNIOpenCV.dll, добавив: System.out.println("java.library.path="+System.getProperty("java.library.path")); в блок статического конструктора.

Однако, я думаю, что проблема здесь не в том, что вы нашли файл JNIOpenCV.dll, а в файле, от которого он зависит.Откройте файл .dll в средстве для обхода зависимостей (просто перетащите его туда) и найдите сообщения об ошибках (кроме msjava.dll - игнорируйте это, это не имеет значения).Скорее всего, я догадываюсь, что вам нужны библиотеки времени выполнения Microsoft Visual C / C ++, загрузите их с веб-сайта Visual Studio и поместите в ту же папку, что и ваша dll.

Удачи!

...