OpenCV zu JNI, wie es funktioniert?
Ich bin tring zu verwenden opencv und java für die Gesichtserkennung, und dass pursit ich fand diese "JNI2OPENCV" - Datei....aber ich bin verwirrt über, wie es funktioniert, kann mir jemand helfen?
http://img519.imageshack.us/img519/4803/askaj.jpg
und das folgende ist die 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();
}
}
Kann mir jemand sagen, wie kann ich diese Arbeit auf Netbeans?? Ich habe versucht, Google hilft aber auf dieses Thema ist sehr meger.
Ich habe die ganzen Ordner wie Llibrary in netbeans-Projekt und ob ich versuche, die Datei auszuführen bekomme ich folgende Merkmale aufweist wrroes.
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)
Kann mir jemand sagen, die genaue Art und Weise der Arbeit mit diesen? wie, was muss ich tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mittels JNI auf Windows, Dependency Walker ist dein Freund.
Aber bevor wir zu, dass Sie zuerst überprüfen, ob die JRE zu finden JNIOpenCV.dll durch hinzufügen:
System.out.println("java.library.path="+System.getProperty("java.library.path"));
der statische Konstruktor-block.
Aber ich denke, das Problem hier ist nicht der Suche nach Ihrem JNIOpenCV.dll Datei, sondern eine Datei, von der es abhängt. Öffnen Sie Ihre .dll in der dependency walker (ziehen Sie es einfach dort) und achten Sie auf eventuelle Fehlermeldungen (außer msjava.dll - ignorieren, dass es nicht wichtig ist). Wahrscheinlich meine Vermutung ist, dass Sie brauchen Microsoft Visual C/C++ - Laufzeit-Bibliotheken, laden Sie Sie von der Visual Studio-website, und setzen Sie Sie in den gleichen Ordner wie die dll.
Viel Glück!
Sollten Sie einen Blick hier, ein paar der Beispiele sind Haken mit JNI:
http://code.google.com/p/android-opencv/
Habe ich eine funktionierende Android-Beispiel unter Verwendung von OpenCV 2.3.1 und Eclipse anstelle von Netbeans.
Diese kleine tutorial beschreibt einen Roboter folgende torchlight. Die Seite enthält die erforderlichen Schritte und den source-code als auch.