如何使用libfacerec Opencv库获得相似性百分比

时间:2012-06-13 07:44:59

标签: c++ opencv percentage face-recognition

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

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

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

我需要定义一些阈值,然后根据该阈值对某个百分比或距离值验证/使用户图片无效,是否有人知道如何使用libfacerec库执行此操作,因为在此库中没有公共变量可供查看距离或百分比值?否则我需要在库内为它编码,因为据我所知,它不包含此功能???

1 个答案:

答案 0 :(得分:5)

请确保您正在处理最新版本! libfacerec的最新版本允许您获得预测的预测值和置信度值。你可以在这里看到方法的签名:

我在图书馆附带的演示应用程序中显示,请参阅:

这就像打电话一样简单:

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);

然后,您在predictLabel中有预测标签,并且保证了此预测的置信度值。

其次,这可能更符合您的问题,您现在可以设置一个阈值,低于该阈值时输入图像被视为未知。您可以在模型的构造函数中设置阈值,也可以使用setter / getter方法设置阈值:

它也显示在我附带库的演示应用程序中: