EigenFace算法实现人脸识别

   

目录

1.实现效果

2.读取图像

3.创建人脸特征识别器

4.训练模型

5.预测

6.打印出识别的标签和置信度

7.可视化输出


本代码将使用EigenFace算法实现人脸识别功能,并将其与已知的人脸进行匹配。

1.实现效果

2.读取图像

import cv2
import numpy as np

images=[]
images.append(cv2.imread("a1.png", cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread("a2.png", cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread("b1.png", cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread("b2.png", cv2.IMREAD_GRAYSCALE))
# 转为灰度图

labels = [0,0,1,1] # 给训练图像贴标签
predict_image = cv2.imread("a3.png", cv2.IMREAD_GRAYSCALE) # 待识别人脸

3.创建人脸特征识别器

recognizer = cv2.face.EigenFaceRecognizer_create()

参数介绍:

 cv2.face.EigenFaceRecognizer_create(num_components=None, threshold=None)

num_components:在PCA中要保留的分量个数。该参数值通常要根据输入数据来具体确定,并没有一定取值。

threshold:进行人脸识别所采用的阈值。

4.训练模型

recognizer.train(images, np.array(labels))

参数介绍:

None = cv2.faceFaceRecognizer.train(src, labels)

src:训练图像,用来学习的人脸图像。

labels:人脸图像对应的标签。

5.预测

label, confidence= recognizer.predict(predict_image)
# confidence: 大小介于0到20000,只要低于5000都被认为是可靠的结果。

6.打印出识别的标签和置信度

print("识别标签label=", label)
print("置信度confidence=", confidence)

7.可视化输出

name=["andy", "joe"] # 创建一个名单列表,将标签索引映射到具体的人名
cv2.putText(predict_image, name[label], (0,30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255,255,255), 2)
# 使用cv2.putText函数将识别到的人名name[label]绘制在图像的(0, 30)位置,文本使用白色,字体为cv2.FONT_HERSHEY_SIMPLEX,字号为0.8,线条粗细为2
cv2.imshow("result", predict_image)
cv2.waitKey()
cv2.destroyAllWindows()

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值