如何使用opencv python获得最佳特征脸

问题描述 投票:0回答:1

我正在使用此链接: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个回答
0
投票

特征脸在特征向量中从上到下排序。 (按特征值,从最大到最小)。所以刚出第一张N本征脸。通常,为了显示,我们需要在特征脸上添加均值脸并显示结果图像。

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

因此,如果在脸部空间中思考,则脸部是本征空间中的一个点,您可以将任何脸部作为通常的点进行合成

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.