JAVA:这个LBPH模型还没有计算出来。你叫火车吗?在功能上';cv::face::LBPH::predict';OPENCV 4 1 2

JAVA:这个LBPH模型还没有计算出来。你叫火车吗?在功能上';cv::face::LBPH::predict';OPENCV 4 1 2,java,opencv,predict,Java,Opencv,Predict,我将一幅图像与一组图像进行比较,以了解它们是否相似 我在java代码中使用opencv 4.1.2。我需要知道一张图片是否看起来像另一张 这段代码是我在网上找到的,但我无法执行 public static void main(String[] args) { try { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); String trainingDir = "C:/PROYECTO/RECO

我将一幅图像与一组图像进行比较,以了解它们是否相似 我在java代码中使用opencv 4.1.2。我需要知道一张图片是否看起来像另一张 这段代码是我在网上找到的,但我无法执行

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)

如果您知道错误在哪里或我做错了什么,请告诉我

欢迎使用堆栈溢出。你能改进一下你的头衔吗?您需要先训练您的模型,或加载现有模型,然后才能使用它。