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

wol*_*ePk 3 c++ opencv face-recognition percentage

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

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

         if(dist < minDist) {
        minDist = dist;
        minClass = _labels[sampleIdx];
    }
Run Code Online (Sandbox Code Playgroud)

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

byt*_*ish 5

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

它显示在我随库提供的演示应用程序中,请参阅:

它就像调用一样简单:

FaceRecognizer::predict(InputArray src, int &label, double &confidence); 
Run Code Online (Sandbox Code Playgroud)

在计算模型上.所以在你的应用程序中你只需写:

Mat testSample; // of course this is set somewhere in your application
int predictedLabel = -1;
double confidence = 0.0;
model.predict(testSample, predictedLabel, confidence);
Run Code Online (Sandbox Code Playgroud)

然后,您在predictLabel中具有预测标签,并且该置信度的置信度值.

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

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