【问题标题】:How to get best eigenface using opencv python如何使用opencv python获得最佳特征脸
【发布时间】:2020-06-12 08:39:21
【问题描述】:

我正在使用这个链接:https://www.learnopencv.com/eigenface-using-opencv-c-python/ 来获取图像和特征脸的平均脸。

# Compute the eigenvectors from the stack of images created
  print("Calculating PCA ", end="...")
  mean, eigenVectors = cv2.PCACompute(data, mean=None, maxComponents=NUM_EIGEN_FACES)
  print ("DONE")
  averageFace = mean.reshape(sz)
  eigenFaces = [];
  for eigenVector in eigenVectors:
    eigenFace = eigenVector.reshape(sz)
    eigenFaces.append(eigenFace)

但我不知道如何获得像这张图片这样的顶级特征脸image example top eigenfaces

源码github

【问题讨论】:

    标签: python opencv face-recognition


    【解决方案1】:

    特征面在 eigenVector 中从上到下排序。 (按特征值,从大到小)。因此,只需输出前 N 个特征面。通常为了显示我们需要将平均脸添加到特征脸并显示结果图像。

    真正的特征面是人脸图像空间中的ND轴,平均人脸是原点,特征值与沿某个轴(特征面)设置的输入面的离散度成正比。首先(在您的情况下为“最佳”)是具有最大方差的轴。

    所以如果在人脸空间中思考,人脸是本征空间中的一个点,你可以像往常一样合成任何人脸

    face(C1,C2,..,CN)=mean_face+ C1*eigen_face1+C2*eigen_face2+...CN*eigen_faceN

    您也可以将任何面投影到特征空间并获得其 C1,C2,...,CN 坐标。

    使用这些坐标,您可以找到人脸之间的“距离”,它通常用于比较人脸。

    【讨论】:

      猜你喜欢
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 2012-03-21
      • 2017-08-08
      • 2019-04-15
      相关资源
      最近更新 更多