2014-03-01 25 views
0

人臉識別類可以識別數據庫中只有一個圖像的人臉嗎?我只使用正面,我想使用fisherfaces算法。桌面Java - 試圖用JavaCV創建一個用於人臉識別的類

無論如何,我想基於我在互聯網上找到的樣本實施一種方法,它尚未完成,未經測試。

該方法將使用來自視頻捕獲的框架,該框架返回Mat,將Mat框架轉換爲bufferedImage,並將此bufferedImage作爲參數發送給我打算用於人臉識別的此方法。如何過,當我使用

的IplImage getVCFrame = createFrom(幀)

它說,createFrom(BufferedImage的)是不確定的。我希望這將緩衝的圖像轉換爲IplImage。

這裏是我的代碼至今的休息,(注意,這是不完整的,我只是想弄清楚爲什麼日食是給我未定義的錯誤)

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嘗試和使用它的臉部識別

回答

0

我設法解決我的錯誤,我有一個語法錯誤從我邊...

getVCFrame = IplImage.createFrom(frame); 

這解決了我的錯誤,我將在我的代碼完成後測試它是否可能帶有1個圖像

+0

您是否曾經發現在培訓後只有1張圖像是否可以識別臉部?這對我來說非常有用。謝謝! – dave823

+0

你好,戴夫,是的,我做到了,但返回的用戶不太可能是正確的。門檻總是超過5000.這是通過我的筆記本電腦上的攝像頭進行測試的。我建議你使用多於一個圖像並以不同的角度。如果你做了一些研究,它建議你使用一組圖像(越多越好) – Joseph118

+0

@ dave823對不起,我的遲到答覆...我最近很忙,並且在stackoverflow上處於非活動狀態。我希望我的評論能幫助你解決這個問題:)。 – Joseph118