JAVA: эта модель LBPH еще не рассчитана. Вы называли метод поезда? в функции 'cv :: face :: LBPH :: предсказывать' OPENCV 4 1 2 - PullRequest
0 голосов
/ 08 марта 2020

Я сравниваю одно изображение с группой изображений, чтобы узнать, похожи ли они, используя 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)

подскажите пожалуйста если знаете где ошибка или что я делаю не так

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...