gpt4 book ai didi

python - openCV的特征脸

转载 作者:行者123 更新时间:2023-12-02 17:15:06 25 4
gpt4 key购买 nike

我刚刚认识了cv2.createEigenFaceRecognizer的一些面孔。
但是我要知道的是输入的人脸多少看起来像计算出的特征脸。
这个想法是,您可以重新识别不在数据库中的人员。

编辑:

例如:我在模型上训练了A,B和C面,然后看到了C和D面。我希望能够将C面与D面区分开。

谢谢!

最佳答案

您可以在cv::FaceRecognizer的文档中找到有关设置阈值的部分,位于:

  • http://docs.opencv.org/trunk/modules/contrib/doc/facerec/facerec_api.html#setting-the-thresholds

  • 它与OpenCV Python包装器的工作原理相同,在Python中调用 help(cv2.createFaceRecognizer)时可以很容易地看到它:

    Help on built-in function createEigenFaceRecognizer in module cv2:

    createEigenFaceRecognizer(...)
    createEigenFaceRecognizer([, num_components[, threshold]]) -> retval

    因此,在代码中,您将创建一个带有阈值的模型,我将其设置为 100.0。低于此值的任何内容都将在预测中生成 -1,这意味着此面孔为 unknown:
    # Create the Eigenfaces model. We are going to use the default
    # parameters for this simple example, please read the documentation
    # for thresholding:
    model = cv2.createEigenFaceRecognizer(threshold=100.0)

    如演示中所示,您可以通过以下方式获得预测和相关的置信度(即到您的训练数据集中最近的邻居的距离):
    [predicted_label, predicted_confidence] = model.predict(image)

    因此,如果您在使用阈值的主题 ABC 上训练模型,则对 D的预测应产生 -1,而应识别 ABC。鉴于事实,您正在使用阈值。

    至于迭代添加新面孔而无需重新估计整个模型。对于本征面或Fisherfaces方法而言,这是不可能的。您始终必须为这两种算法调用 FaceRecognizer::train来学习模型。您可以使用 cv2.createLBPHFaceRecognizer创建的本地二进制模式直方图(LBPH)模型支持更新模型而无需重新计算其他训练样本。请参阅以下API文档:
  • http://docs.opencv.org/trunk/modules/contrib/doc/facerec/facerec_api.html#facerecognizer-update
  • 关于python - openCV的特征脸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12291243/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com