我正在尝试在Android应用程序中实现人脸识别,经过一些研究后我安装了opencv安卓库并将其导入到Android应用程序中。
我还了解到用于人脸识别的3种最常用的算法(至少是教程中最常用的算法)是LBPH,FischerFaces和Eigenfaces,但是我在SDK中找不到它们的实现,我错过了什么?
我是否必须通过JNI导入C ++代码?或者是否有一些我可以在Android应用程序中使用的java实现?
答案 0 :(得分:2)
我做了一个快速(虚拟)尝试,它应该类似于:
facerec = new createFisherFaceRecognizer();
// traindata
List<Mat> traindata = new ArrayList<Mat>();
traindata.add(image1); // add grayscale images, all cropped to the same size (like(90x90)
traindata.add(image2); // ...
// trainlabels, i guess, MatOfInt(1,2,3) would work, too
Mat labels = new Mat(1,traindata.size(), CvType.CV_32S);
int [] l = {1,2,3, ... }; // 1 label for each image
labels.put(0, 0, l);
facerec.train( traindata, labels );
// now to prediction:
int [] label = new int[1];
double [] conf = new double[1];
// test_im must be grayscale, cropped to same size as the trainimages
facerec.predict(test_im, label, conf);
System.out.println("rec " + label[0] + " " + conf[0]);