这可能是一个简单的问题,但我有点困惑,所以希望有人能正确指导我。

我正在使用 openCV libfacerec 的人脸识别库,它给出了很好的结果,但我需要估计相似度的百分比。如果我使用未知图像作为输入,那么它仍然会根据最后的距离值预测系统中是否存在该人

         if(dist < minDist) {
        minDist = dist;
        minClass = _labels[sampleIdx];
    }

我需要定义一些阈值,然后根据该阈值对某个百分比或距离值验证/无效用户图片,有没有人知道如何使用 libfacerec 库来做到这一点,因为在这个库中没有公共(public)变量来查看距离或百分比值(value)?否则我是否需要在库中为它编码,因为据我所知它不包含这个功能???

最佳答案

请确保您正在使用最新版本! libfacerec 的最新版本允许您获得预测的预测值和置信度值。您可以在此处查看方法的签名:

  • https://github.com/bytefish/libfacerec/blob/master/include/facerec.hpp

  • 它显示在我随库提供的演示应用程序中,请参阅:
  • https://github.com/bytefish/libfacerec/blob/master/samples/facerec_demo.cpp

  • 就像调用一样简单:
    FaceRecognizer::predict(InputArray src, int &label, double &confidence);
    

    在计算模型上。因此,在您的应用程序中,您只需编写:
    Mat testSample; // of course this is set somewhere in your application
    int predictedLabel = -1;
    double confidence = 0.0;
    model.predict(testSample, predictedLabel, confidence);
    

    然后你有预测标签中的预测标签和这个预测的置信度值。

    其次,这可能更适合您的问题,您现在可以设置阈值,低于该阈值时,输入图像被视为未知。您可以在模型的构造函数中或使用 setter/getter 方法设置阈值:
  • https://github.com/bytefish/libfacerec/blob/master/include/facerec.hpp(参见 createEigenFaceRecognizer、createFisherFaceRecognizer、createLBPHFaceRecognizer)

  • 它也显示在我随库提供的演示应用程序中:
  • https://github.com/bytefish/libfacerec/blob/master/samples/facerec_demo.cpp
  • 关于c++ - 如何使用 libfacerec Opencv 库获取相似度百分比,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11010303/

    10-12 05:28