EigenFaces人脸识别---OpenCV-Python开发指南(43)

简介: EigenFaces人脸识别---OpenCV-Python开发指南(43)

EigenFaces原理


EigenFaces通常也被称为特征脸,它使用主成分分析(Principal Component Analysis,PAC)方法将高维的人脸数据处理为低维数据后,在进行数据分析和处理,获取识别结果。


EigenFaces简单来说就是对原始数据使用PCA方法进行降维,获取其中的主成分信息,从而实现人脸识别的方法。


EigenFaces识别步骤


OpenCV中,它给我们提供函数cv2.face.EigenFaceRecognizer_create()生成特征脸识别器,然后应用cv2.face_EigenFaceRecognizer.train()函数完成训练,最后用cv2.face_FaceRecognizer.predict()导入要识别的人脸图像,获取预测结果。


是不是与上一篇博文人脸识别的步骤一摸一样呢?不过,虽然最后一个方法相同,但前面两个方法还是不同的,我们也同样介绍一下函数的定义与使用。

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

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


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


cv2.face_EigenFaceRecognizer.train(self, src, labels)

这里的src,labels参数与LBPH人脸识别的train函数一摸一样,这里就不在赘述。


EigenFaces实战人脸识别


了解了EigenFaces人脸识别步骤。下面,我们还是使用前文的2张图片作为训练集,进行瑞克与尼根的判断,具体代码如下:

import cv2
import numpy as np
images = []
images.append(cv2.imread("42_1.jpg", cv2.IMREAD_GRAYSCALE))
images.append(cv2.imread("42_2.jpg", cv2.IMREAD_GRAYSCALE))
labels = [0, 1]
recognizer = cv2.face.EigenFaceRecognizer_create()
recognizer.train(images, np.array(labels))
predict_image = cv2.imread('42_4.jpg', cv2.IMREAD_GRAYSCALE)
label, confidence = recognizer.predict(predict_image)
if label == 0:
    print("匹配的人脸为尼根")
elif label == 1:
    print("匹配的人脸为瑞克")
print("confidence=", confidence)


这里我们使用尼根的头像作为测试人脸识别的图像。运行之后效果如下:


EigenFaces人脸识别唯一的缺陷就是不管是训练的图像,还是测试的图像,其大小必须一致。而LBPH人脸识别并不需要图像大小一致。还有EigenFaces人脸识别返回的confidence大小介于0到20000,只要低于5000都被认为是可靠的结果。这个有LBPH不同,需要额外注意。


训练集图像:



测试图像:

相关文章
|
19天前
|
数据采集 存储 XML
深入浅出:基于Python的网络数据爬虫开发指南
【2月更文挑战第23天】 在数字时代,数据已成为新的石油。企业和个人都寻求通过各种手段获取互联网上的宝贵信息。本文将深入探讨网络爬虫的构建与优化,一种自动化工具,用于从网页上抓取并提取大量数据。我们将重点介绍Python语言中的相关库和技术,以及如何高效、合法地收集网络数据。文章不仅为初学者提供入门指导,也为有经验的开发者提供进阶技巧,确保读者能够在遵守网络伦理和法规的前提下,充分利用网络数据资源。
|
19天前
|
算法 计算机视觉 开发者
OpenCV中使用Eigenfaces人脸识别器识别人脸实战(附Python源码)
OpenCV中使用Eigenfaces人脸识别器识别人脸实战(附Python源码)
136 0
|
7月前
|
数据采集 JavaScript 前端开发
Web爬虫开发指南:使用Python的BeautifulSoup和Requests库
Web爬虫是一种从互联网上获取数据的自动化工具,它可以用于抓取网页内容、提取信息和分析数据。Python提供了一些强大的库,其中BeautifulSoup和Requests是两个常用的工具,用于解析HTML内容和发起HTTP请求。本文将介绍如何使用BeautifulSoup和Requests库构建一个简单而有效的Web爬虫。
|
7月前
|
前端开发 API 数据库
Python网站开发指南:构建现代化、高效的Web应用
在当今数字化时代,网站已成为企业、组织以及个人展示自己的重要窗口。Python作为一种简洁、高效且易于学习的编程语言,被广泛运用于网站开发领域。本文将向您介绍如何使用Python进行网站开发,包括常用的Web框架、关键技术和最佳实践。
|
算法
实现人脸美白算法---OpenCV-Python开发指南(59)
实现人脸美白算法---OpenCV-Python开发指南(59)
487 0
实现人脸美白算法---OpenCV-Python开发指南(59)
|
算法 Python
实现人脸磨皮算法---OpenCV-Python开发指南(58)
实现人脸磨皮算法---OpenCV-Python开发指南(58)
417 0
实现人脸磨皮算法---OpenCV-Python开发指南(58)
|
计算机视觉
实现抖音慢动作效果---OpenCV-Python开发指南(57)
实现抖音慢动作效果---OpenCV-Python开发指南(57)
184 1
|
计算机视觉
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
143 1
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
|
算法
实现抖音霓虹灯效果---OpenCV-Python开发指南(55)
实现抖音霓虹灯效果---OpenCV-Python开发指南(55)
225 0
实现抖音霓虹灯效果---OpenCV-Python开发指南(55)
|
算法 程序员 计算机视觉
实现抖音闪烁效果---OpenCV-Python开发指南(54)
实现抖音闪烁效果---OpenCV-Python开发指南(54)
142 0
实现抖音闪烁效果---OpenCV-Python开发指南(54)

热门文章

最新文章