2015-11-02 1 views
0

Я хочу распознавать лица в реальном времени через веб-камеру. Я работал до обнаружения лица через веб-камеру, но у меня возникают проблемы с внедрением алгоритма собственных лиц в Java (Netbeans).Реализация EigenFace: на Java с использованием OpenCV3

я достиг обнаружения лица, используя следующий код: -

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 и этот Мой проект для колледжа.

+0

OpenCV уже предоставляет [реализацию на основе собственных] (http://docs.opencv.org/3.0-beta/modules/face/doc/facerec/facerec_tutorial.html#eigenfaces). Я не знаю, поддерживает ли его оболочку, но вы всегда можете вызвать собственный код на C++. – Miki

+0

все это находится в [docs] (http://docs.opencv.org/java/3.0.0/org/opencv/core/Core.html#PCACompute (org.opencv.core.Mat,% 20org.opencv. core.Mat,% 20org.opencv.core.Mat)) – berak

ответ

0

Чтобы создать OpenCV из исходного кода с помощью модулей Contrib (которые содержат пакет org.opencv.face для Java), см. this question and answer.

После построения JAR с вно модулей, вы можете создать экземпляр EigenFaceRecognizer так:

FaceRecognizer модель = org.opencv.face.Face.createEigenFaceRecognizer();