如何使用 opencv 获得最佳特征脸 python
How to get best eigenface using opencv python
我正在使用这个 link : 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
特征面在特征向量中从上到下排序。 (按特征值,从大到小)。所以刚出第 N 个本征面。通常为了展示我们需要将平均面添加到特征面并显示结果图像。
真正的特征脸是人脸图像中的ND轴space,平均脸是原点,特征值与沿特定轴(特征脸)设置的输入脸的分散成正比。首先("best" 在你的情况下)是具有最大方差的轴。
所以如果用脸思考space,脸就是特征点space,你可以像往常一样合成任何脸
人脸(C1,C2,..,CN)=mean_face+ C1*eigen_face1+C2*eigen_face2+...CN*eigen_faceN
您也可以将任何面投影到特征值 space 并获得它的 C1、C2、...、CN 坐标。
使用这些坐标,您可以找到面孔之间的 "distance",它通常用于比较面孔。
我正在使用这个 link : 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
特征面在特征向量中从上到下排序。 (按特征值,从大到小)。所以刚出第 N 个本征面。通常为了展示我们需要将平均面添加到特征面并显示结果图像。
真正的特征脸是人脸图像中的ND轴space,平均脸是原点,特征值与沿特定轴(特征脸)设置的输入脸的分散成正比。首先("best" 在你的情况下)是具有最大方差的轴。
所以如果用脸思考space,脸就是特征点space,你可以像往常一样合成任何脸
人脸(C1,C2,..,CN)=mean_face+ C1*eigen_face1+C2*eigen_face2+...CN*eigen_faceN
您也可以将任何面投影到特征值 space 并获得它的 C1、C2、...、CN 坐标。
使用这些坐标,您可以找到面孔之间的 "distance",它通常用于比较面孔。