代码语言:javascript复制
import cv2
import numpy as np
images=[]
images.append(cv2.imread('C:/Users/xpp/Desktop/coins.png',cv2.IMREAD_GRAYSCALE))#原始图像
images.append(cv2.imread('C:/Users/xpp/Desktop/coins.png',cv2.IMREAD_GRAYSCALE))#原始图像
images.append(cv2.imread('C:/Users/xpp/Desktop/Lena.png',cv2.IMREAD_GRAYSCALE))#原始图像
images.append(cv2.imread('C:/Users/xpp/Desktop/Lena.png',cv2.IMREAD_GRAYSCALE))#原始图像
labels=[0,0,1,1]#图像标签
recognizer=cv2.face.FisherFaceRecognizer_create()#人脸识别
recognizer.train(images,np.array(labels))#模型训练
predict_image=cv2.imread('C:/Users/xpp/Desktop/face.png',cv2.IMREAD_GRAYSCALE)#原始图像
label, confidence=recognizer.predict(predict_image)#模型预测
print("label=",label)
print("confidence=",confidence)
cv2.imshow("predict_image",predict_image)
cv2.waitKey()
cv2.destroyAllWindows()
label= 1 confidence= 10647.989937693492
算法:LDA人脸识别是一种经典的线性学习方法,也称Fisher判别分析法。
例子:
Fisher线性判别分析是要找到一条最优的投影线,满足: ● A、B组内的点之间尽可能地靠近 ● C的两个端点之间的距离(间距离)尽可能地远离
retval=cv2.face.FisherFaceRecognizer_create([, num_components[, threshold]])
- num_components表示使用Fisherfaces准则进行线性判别分析时保留的成分数量,默认值是0
- threshold表示进行识别时所使用的阈值。如果最近的距离比设定的阈值threshold还要大,函数返回“-1”
None=cv2.face_FaceRecognizer.train(src, labels)
- src表示输入图像
- labels表示标签
label, confidence=cv2.face_FaceRecognizer.predict(src)
- src表示输入图像