2016-07-12 6 views
-1

L'application devrait pouvoir enregistrer les images face_1_01.png, face_1_02.png, face_2_01.png et ainsi de suite dans un dossier appelé formation des images à l'aide d'une webcam, puis l'application devrait être en mesure de parcourir tous les images dans ce dossier et reconnaître le visage/visages apparaissant actuellement dans la webcam en retournant le nom de l'image au-dessus du rectangle qui est dessiné sur le visage.Reconnaissance des visages avec javaCV et netbeans

here est un exemple. Malheureusement l'application dans la vidéo n'est pas open source ..

here est le lien du code suivant.

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); 
    } 
    } 

Je suis incapable de savoir où spécifier le nom de chemin du répertoire avec contient toutes les images de formation.

Répondre

0

String trainingDir = args[0];

Le programme lu traningDir des premiers paramètres de ligne de commande.

Vous pouvez paramètre exécuter via la console (c.-à-terminal dans Linux ou DOS sous Windows) comme

java OpenCVFaceRecognizer /path/to/training/Dir

ou IDE ajouter/chemin/vers/traning/Dir en "run" de ce projet . Dans ce dernier cas, vous pouvez cliquer sur le bouton "Exécuter" pour exécuter.