Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于javaCV和netbeans的人脸识别_Java_Image Processing_Netbeans_Opencv3.0_Javacv - Fatal编程技术网

基于javaCV和netbeans的人脸识别

基于javaCV和netbeans的人脸识别,java,image-processing,netbeans,opencv3.0,javacv,Java,Image Processing,Netbeans,Opencv3.0,Javacv,应用程序应该能够使用网络摄像头将图像face_1_01.png、face_1_02.png、face_2_01.png等保存在名为training images的文件夹中,然后,应用程序应该能够循环浏览该文件夹中的所有图像,并识别当前出现在网络摄像头中的人脸,并返回在该人脸上绘制的矩形上方的图像名称 这就是一个例子。不幸的是,视频中的应用程序不是开源的 是下面代码的链接 import com.googlecode.javacv.cpp.opencv_core; import st

应用程序应该能够使用网络摄像头将图像face_1_01.png、face_1_02.png、face_2_01.png等保存在名为training images的文件夹中,然后,应用程序应该能够循环浏览该文件夹中的所有图像,并识别当前出现在网络摄像头中的人脸,并返回在该人脸上绘制的矩形上方的图像名称

这就是一个例子。不幸的是,视频中的应用程序不是开源的

是下面代码的链接

    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;

    public class OpenCVFaceRecognizer {

    public static void main(String[] args) {

    String trainingDir = args[0];
    IplImage testImage = cvLoadImage(args[1]);

    File root = new File(trainingDir);

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

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

我无法确定在何处指定包含所有训练图像的目录的路径名。
String trainingDir=args[0]

程序从第一个命令行参数读取traningDir

您可以通过控制台(即linux中的终端或windows中的DOS)运行,如

java OpenCVFaceRecognizer/path/to/training/Dir

或者在IDE中将/path/to/traning/Dir添加到该项目的“run”参数中。在后一种方式中,您可以单击“运行”按钮执行