特征脸实现:在Java中使用OpenCV3

特征脸实现:在Java中使用OpenCV3,java,opencv,netbeans-8,face-recognition,opencv3.0,Java,Opencv,Netbeans 8,Face Recognition,Opencv3.0,我想通过网络摄像头实时识别人脸。我一直工作到通过网络摄像头检测人脸,但在Java(Netbeans)中实现特征人脸算法时遇到了麻烦 我使用以下代码实现了人脸检测:- private DaemonThread myThread = null; int count = 0; VideoCapture webSource = null; Mat frame = new Mat(); MatOfByte mem = new MatOfByte(); CascadeClassifier faceDete

我想通过网络摄像头实时识别人脸。我一直工作到通过网络摄像头检测人脸,但在Java(Netbeans)中实现特征人脸算法时遇到了麻烦

我使用以下代码实现了人脸检测:-

private DaemonThread myThread = null;
int count = 0;
VideoCapture webSource = null;

Mat frame = new Mat();
MatOfByte mem = new MatOfByte();
CascadeClassifier faceDetector = new CascadeClassifier(ScannerGUI.class.getResource("haarcascade_frontalface_alt.xml").getPath().substring(1));
MatOfRect faceDetections = new MatOfRect();


class DaemonThread implements Runnable
{
protected volatile boolean runnable = false;

@Override
public  void run()
{
    synchronized(this)
    {
        while(runnable)
        {
            if(webSource.grab())
            {
            try
                    {
                        webSource.retrieve(frame);
            //Highgui.imencode(".bmp", frame, mem);
                        Graphics g=jPanel1.getGraphics();
                        faceDetector.detectMultiScale(frame, faceDetections);

                        for (Rect rect : faceDetections.toArray()) 
                       {  Imgproc.rectangle(frame, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),new Scalar(0, 255, 0),2);
                        }

                        Imgcodecs.imencode(".bmp", frame, mem);
            Image im = ImageIO.read(new ByteArrayInputStream(mem.toArray()));
            BufferedImage buff = (BufferedImage) im;
            if (g.drawImage(buff, 0, 0, getWidth(), getHeight() -150 , 0, 0, buff.getWidth(), buff.getHeight(), null))

            if(runnable == false)
                        {
                System.out.println("Going to wait()");
                this.wait();
            }
         }
         catch(Exception ex)
                     {
            System.out.println("Error");
                     }
            }
        }
    }
 }
}
现在我想先将检测到的人脸保存在特征人脸中,然后再识别这个人脸

有人能帮我解决这个问题吗?我已经在网上彻底搜索了Eigen face在Java中的实现,但找不到任何有用的东西


请帮助我完成这个,因为我是OpenCV的新手,这是我大学的项目

要使用contrib模块(包含org.OpenCV.face Java包)从源代码构建OpenCV,请参阅

使用contrib模块构建JAR后,您可以像下面这样实例化一个EigenFaceRecognitor:

FaceRecognizer model=org.opencv.face.face.createEigenFaceRecognizer()

OpenCV已经提供了。我不知道java包装器是否支持它,但是你可以总是调用C++的C++代码。