这可能是一个简单的问题,但我有点困惑,所以希望有人能正确指导我。
我正在使用 openCV libfacerec 的人脸识别库,它给出了很好的结果,但我需要估计相似度的百分比。如果我使用未知图像作为输入,那么它仍然会根据最后的距离值预测系统中是否存在该人
if(dist < minDist) {
minDist = dist;
minClass = _labels[sampleIdx];
}
我需要定义一些阈值,然后根据该阈值对某个百分比或距离值验证/无效用户图片,有没有人知道如何使用 libfacerec 库来做到这一点,因为在这个库中没有公共(public)变量来查看距离或百分比值(value)?否则我是否需要在库中为它编码,因为据我所知它不包含这个功能???
最佳答案
请确保您正在使用最新版本! 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);
然后你有预测标签中的预测标签和这个预测的置信度值。
其次,这可能更适合您的问题,您现在可以设置阈值,低于该阈值时,输入图像被视为未知。您可以在模型的构造函数中或使用 setter/getter 方法设置阈值:
它也显示在我随库提供的演示应用程序中:
关于c++ - 如何使用 libfacerec Opencv 库获取相似度百分比,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11010303/