JavaCV Face Training для распознавания - PullRequest
0 голосов
/ 16 октября 2019

Я создал приложение для обнаружения лиц, в котором opencv JavaCam захватывает лицо в кадре и обрезает его, как я могу изменить приведенный ниже код, чтобы обучить свое обнаруженное лицо, как только лицо будет обнаружено, и сохранить обученное изображение в SD-камере для лицапризнание я мог бы сослаться на обученный образ?

String trainingDir = "";
IplImage testImage = cvLoadImage("");

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());
   String temp= image.getName();
   label = Integer.parseInt(temp.charAt(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);
...