Desktop Java - 尝试使用JavaCV创建一个用于人脸识别的类

时间:2014-03-01 17:17:08

标签: java opencv javacv

面部识别类是否可以识别数据库中只有1个图像的面部?我只使用正面,我想使用fisherfaces算法。

无论如何,我正在尝试实现一种基于我在互联网上找到的样本的方法,它还没有完整,没有经过测试。

该方法将使用视频捕获中返回Mat的帧,Mat帧转换为bufferedImage,我将此bufferedImage作为参数发送到此方法,我打算用于人脸识别。我何时使用

IplImage getVCFrame = createFrom(frame)

它表示createFrom(BufferedImage)未定义。我希望这可以将缓冲的图像转换为IplImage。

到目前为止,这是我剩下的代码,(请注意它不完整,我只是想弄清楚为什么eclipse会给我未定义的错误)

package Function;

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.awt.image.BufferedImage;
import java.io.File;
import java.io.FilenameFilter;

import org.opencv.core.Mat;

public class FaceRecognition {

    public void checkFace(String imagePath, BufferedImage frame) {
        // Video Camera Frame       
        IplImage getVCFrame = new IplImage();
        getVCFrame = createFrom(frame);

        // Frame from Storage
        IplImage img;
        IplImage grayImg;
        int numberOfImages = 1;
        int label;

        MatVector images = new MatVector(numberOfImages);
        int[] labels = new int[numberOfImages];

        img = cvLoadImage(imagePath);
        label = 1;
        grayImg = IplImage.create(img.width(), img.height(), IPL_DEPTH_8U, 1);
        cvCvtColor(img, grayImg, CV_BGR2GRAY);

        images.put(0, img);
        labels[0] = label;

        IplImage GrayVCFrame = IplImage.create(getVCFrame.width(), getVCFrame.height(), IPL_DEPTH_8U, 1);


        FaceRecognizer fr = createFisherFaceRecognizer();
        //FaceRecognizer faceRecognizer = createEigenFaceRecognizer();
        // FaceRecognizer faceRecognizer = createLBPHFaceRecognizer();

        fr.train(images, labels);
        cvCvtColor(getVCFrame, GrayVCFrame, CV_BGR2GRAY);
    }
}

起初我使用人脸检测OpenCV的,但是,当它来到人脸识别我找不到任何帮助和教程,所以我进口JavaCV尝试使用它的人脸识别

1 个答案:

答案 0 :(得分:0)

我设法解决了我的错误,我的语法错误...

getVCFrame = IplImage.createFrom(frame);

这解决了我的错误,我将在我的代码完成后测试是否可以使用1张图像