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嘗試和使用它的臉部識別
您是否曾經發現在培訓後只有1張圖像是否可以識別臉部?這對我來說非常有用。謝謝! – dave823
你好,戴夫,是的,我做到了,但返回的用戶不太可能是正確的。門檻總是超過5000.這是通過我的筆記本電腦上的攝像頭進行測試的。我建議你使用多於一個圖像並以不同的角度。如果你做了一些研究,它建議你使用一組圖像(越多越好) – Joseph118
@ dave823對不起,我的遲到答覆...我最近很忙,並且在stackoverflow上處於非活動狀態。我希望我的評論能幫助你解決這個問題:)。 – Joseph118