在Android应用程序中使用OpenCV Face识别算法

时间:2014-06-25 12:07:36

标签: java android opencv

我正在尝试在Android应用程序中实现人脸识别,经过一些研究后我安装了opencv安卓库并将其导入到Android应用程序中。

我还了解到用于人脸识别的3种最常用的算法(至少是教程中最常用的算法)是LBPH,FischerFaces和Eigenfaces,但是我在SDK中找不到它们的实现,我错过了什么?

我是否必须通过JNI导入C ++代码?或者是否有一些我可以在Android应用程序中使用的java实现?

1 个答案:

答案 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]);