Функция обчения
FaceRecognizer faceRecognizer = createLBPHFaceRecognizer();
public void train() {
File imagesDir = new File("src\\vision\\savedFaces");
FilenameFilter imgFilter = new FilenameFilter() {
public boolean accept(File dir, String name) {
name = name.toLowerCase();
return name.endsWith(".jpg") || name.endsWith(".pgm") || name.endsWith(".png");
}
};
File[] imageFiles = imagesDir.listFiles(imgFilter);
MatVector images = new MatVector(imageFiles.length);
Mat labels = new Mat(imageFiles.length, 1, CV_32SC1);
IntBuffer labelsBuf = labels.createBuffer();
int counter = 0;
for (File image : imageFiles) {
Mat baseImage = imread(image.getAbsolutePath(), CV_LOAD_IMAGE_GRAYSCALE);
int label = Integer.parseInt(image.getName().split("\\-")[0]);
ass.put(label, image.getName());
images.put(counter, baseImage);
labelsBuf.put(counter, label);
counter++;
}
faceRecognizer.train(images, labels);
faceRecognizer.save("src\\vision\\result_train.xml");
Передать фото и получить индекс картинки.
int lable = faceRecognizer.predict(cvarrToMat(face));