Я сравниваю одно изображение с группой изображений, чтобы узнать, похожи ли они, используя opencv 4.1.2 в java коде. Мне нужно знать, в основном, выглядит ли одно изображение как другое, этот код я нашел в inte rnet, но не могу выполнить его
public static void main(String[] args) {
try {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
String trainingDir = "C:/PROYECTO/RECONOCIMIENTO FACIAL/fotos";
BufferedImage img = null;
img = ImageIO.read(new File("C:/PROYECTO/RECONOCIMIENTO FACIAL/cara2.jpg"));
OpenCVFrameConverter.ToMat cv = new OpenCVFrameConverter.ToMat();
Mat testImage = cv.convertToMat(new Java2DFrameConverter().convert(img));
File root = new File(trainingDir);
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 = root.listFiles(imgFilter);
MatVector images = new MatVector(imageFiles.length);
Mat labels = new Mat(imageFiles.length, 1, CvType.CV_32SC1);
IntBuffer labelsBuf = labels.createBuffer();
int counter = 0;
for (File image : imageFiles) {
BufferedImage img2 = null;
img2 = ImageIO.read(new File(image.getAbsolutePath()));
OpenCVFrameConverter.ToMat cv2 = new OpenCVFrameConverter.ToMat();
Mat img3 = cv2.convertToMat(new Java2DFrameConverter().convert(img2));
// img3 = new Mat(Imgcodecs.IMREAD_GRAYSCALE);
// Mat img = imread(image.getAbsolutePath(), Imgcodecs.IMREAD_GRAYSCALE);
int label = image.getName().codePointAt(0);
images.put(counter, img3);
labelsBuf.put(counter, label);
counter++;
}
FaceRecognizer faceRecognizer = FisherFaceRecognizer.create();
// FaceRecognizer faceRecognizer = EigenFaceRecognizer.create();
// FaceRecognizer faceRecognizer = LBPHFaceRecognizer.create();
faceRecognizer.train(images, labels);
IntPointer label = new IntPointer(1);
DoublePointer confidence = new DoublePointer(1);
faceRecognizer.predict(testImage, label, confidence);
int predictedLabel = label.get(0);
System.out.println("Predicted label: " + predictedLabel);
} catch (Exception e) {
e.printStackTrace();
}
}
, выдайте мне эту ошибку:
OpenCV(4.1.2) C:\projects\javacpp-presets\opencv\cppbuild\windows-x86_64\opencv_contrib-4.1.2\modules\face\src\lbph_faces.cpp:406: error: (-5:Bad argument) This LBPH model is not computed yet. Did you call the train method? in function 'cv::face::LBPH::predict'
at org.bytedeco.opencv.opencv_face.FaceRecognizer.predict(Native Method)
at ec.reconocimiento.pk.testv2.main(testv2.java:60)
подскажите пожалуйста если знаете где ошибка или что я делаю не так