Bootstrap

Opencv:EignFace算法实现人脸识别

目录

简介

代码实现

结果展示


简介

EigenFace算法是人脸识别领域中的一种经典算法,它基于主成分分析(PCA)的原理,通过对人脸图像进行特征提取和降维,从而实现对人脸的有效识别。


EigenFace算法的核心思想是将人脸图像从原始的像素空间转换到一个由特征向量构成的新空间,在这个新空间中,不同的人脸图像可以根据其特征向量被有效地区分开来。这种转换使得同一类别的图像在特征空间中更加紧凑,不同类别的图像则相隔较远。

代码实现

import cv2
import numpy as np

# 预处理训练图片
images = []
a = cv2.imread('hg1.png', 0)
a = cv2.resize(a, (120, 180))
b = cv2.imread('hg2.png', 0)
b = cv2.resize(b, (120, 180))
c = cv2.imread('pyy1.png', 0)
c = cv2.resize(c, (120, 180))
d = cv2.imread('pyy2.png', 0)
d = cv2.resize(d, (120, 180))
images.append(a)
images.append(b)
images.append(c)
images.append(d)

# 训练图片标签
labels = [0, 0, 1, 1]

# 读取将要预测的图片
pre_image = cv2.imread('hg3.png', 0)
pre_image = cv2.resize(pre_image, (120, 180))

# 加载、训练模型
recognizer = cv2.face.EigenFaceRecognizer_create()
recognizer.train(images, np.array(labels))
label, confidence = recognizer.predict(pre_image)

# 预测结果
dic = {0: 'hg', 1: 'pyy'}
print('这个人是:', dic[label])
print('置信度:', confidence)

# 将预测结果显示在图片上
aa = cv2.putText(cv2.imread('hg3.png').copy(), dic[label], (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 0, 255), 2)
cv2.imshow('xx', aa)
cv2.waitKey(60000)

 

结果展示

 


 

;