Javacv:特征脸人脸识别

时间:2014-09-22 13:25:07

标签: java javacv

嗨我刚刚接触到javacv并且在互联网上作为ive searche我反击这段代码我决定使用它,但每次运行项目时它总是返回java.lang.NumberFormatExcepti错误。 plesase帮助我解决这个问题,请帮我解决这个问题

    package com.shekhar.facedetection;

import com.googlecode.javacv.cpp.opencv_core;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_contrib.*;
import java.io.File;
import java.io.FilenameFilter;
import static com.googlecode.javacv.cpp.opencv_contrib.createEigenFaceRecognizer;

public class facerecog {
    public static void main(String[] args) {

        IplImage testImage = cvLoadImage("C://Users//Michelle//Desktop//jaffe//testna.jpg");

        File root = new File("C://Users//Michelle//Desktop//jaffe//happy");

        FilenameFilter pngFilter = new FilenameFilter() {
            public boolean accept(File dir, String name) {
                return name.toLowerCase().endsWith(".jpg");
            }
        };

        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());

            label = Integer.parseInt(image.getName().split("\\-")[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);
    }
}

错误

   Exception in thread "main" java.lang.NumberFormatException: For input string: "happy1.jpg"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at com.shekhar.facedetection.facerecog.main(facerecog.java:40)

第40行

label = Integer.parseInt(image.getName().split("\\-")[0]);

请帮助我帮助我

1 个答案:

答案 0 :(得分:0)

删除\\

label = Integer.parseInt(image.getName().split("-")[0]);

您还应该替换文件夹路径中的双/(即使这不会影响您的结果)

C:/Users/Michelle/Desktop/jaffe/happy