2016-07-12 16 views
-1

Anwendung sollte in der Lage sein, Bilder face_1_01.png, face_1_02.png, face_2_01.png und so weiter in einem Ordner namens Trainingsbilder mit einer Webcam speichern, dann Anwendung sollte in der Lage sein, durch alle zu durchlaufen Bilder in diesem Ordner und erkennen das Gesicht/die Gesichter, die gerade in der Webcam erscheinen, und geben den Namen des Bildes über dem Rechteck zurück, das über das Gesicht gezeichnet wird.Gesichtserkennung mit javaCV und Netbeans

here ist ein Beispiel. Leider ist die Anwendung im Video nicht Open Source.

here ist der Link des folgenden Codes.

import com.googlecode.javacv.cpp.opencv_core; 
    import static com.googlecode.javacv.cpp.opencv_highgui.*; 
    import static com.googlecode.javacv.cpp.opencv_core.*; 
    import static com.googlecode.javacv.cpp.opencv_imgproc.*; 
    import static com.googlecode.javacv.cpp.opencv_contrib.*; 
    import java.io.File; 
    import java.io.FilenameFilter; 

    public class OpenCVFaceRecognizer { 

    public static void main(String[] args) { 

    String trainingDir = args[0]; 
    IplImage testImage = cvLoadImage(args[1]); 

    File root = new File(trainingDir); 

    FilenameFilter pngFilter = new FilenameFilter() { 
     public boolean accept(File dir, String name) { 
      return name.toLowerCase().endsWith(".png"); 
     } 
    }; 

    File[] imageFiles = root.listFiles(pngFilter); 

    MatVector images = new MatVector(imageFiles.length); 

    int[] labels = new int[imageFiles.length]; 

    int counter = 0; 
    int label; 

    IplImage img; 
    IplImage grayImg; 

    for (File image : imageFiles) { 
     img = cvLoadImage(image.getAbsolutePath()); 

     label = Integer.parseInt(image.getName().split("\\-")[0]); 

     grayImg = IplImage.create(img.width(), img.height(), IPL_DEPTH_8U, 1); 

     cvCvtColor(img, grayImg, CV_BGR2GRAY); 

     images.put(counter, grayImg); 

     labels[counter] = label; 

     counter++; 
    } 

    IplImage greyTestImage = IplImage.create(testImage.width(), testImage.height(), IPL_DEPTH_8U, 1); 

    FaceRecognizer faceRecognizer = createFisherFaceRecognizer(); 
    // FaceRecognizer faceRecognizer = createEigenFaceRecognizer(); 
    // FaceRecognizer faceRecognizer = createLBPHFaceRecognizer() 

    faceRecognizer.train(images, labels); 

    cvCvtColor(testImage, greyTestImage, CV_BGR2GRAY); 

    int predictedLabel = faceRecognizer.predict(greyTestImage); 

    System.out.println("Predicted label: " + predictedLabel); 
    } 
    } 

Ich bin nicht in der Lage, herauszufinden, wo Sie die Pfadnamen des Verzeichnisses angeben, mit allen Bildern, die Ausbildung enthält.

Antwort

0

String trainingDir = args[0];

das Programm gelesen traningDir von den ersten Befehlszeilenparametern.

Sie können entweder über eine Konsole (dh Terminal in Linux oder DOS in Windows) laufen wie

java OpenCVFaceRecognizer /path/to/training/Dir

oder in IDE hinzufügen/path/to/Traning/Dir in "run" Parameter dieses Projekts . In der letzteren Weise können Sie auf "Ausführen" klicken, um auszuführen.