OpenCV中Fisherfaces人脸识别器识别人脸实战(附Python源码)

简介: OpenCV中Fisherfaces人脸识别器识别人脸实战(附Python源码)

需要源码和图片请点赞关注收藏后评论区留言私信~~~

Fisherfaces是由Ronald Fisher最早提出的,这也是它名字的又来,它基于LDA线性判别分析技术,该方法将人脸数据转换到另外一个空间维度做投影计算,最后根据不同人脸数据的投影距离判断其相似度。开发者同样需要通过以下三个方法完成人脸识别操作

1:通过cv2.face.FisherFaceRecognizer_create(num_components,threshold)

参数说明如下

num_components:可选参数 通过Fisherface方法判断分析时保留的分量个数,建议使用默认值

threshold 可选参数 人脸识别时使用的阈值 建议使用默认值

2:创建识别器对象后 需要通过对象的train方法训练识别器,建议每个人都给出两张以上的人脸图像作为训练样本

recognizer.train(src,train)

参数说明如下

src 用来训练的人脸图像样本列表 格式为list 样本图像宽高必须一致

labels 样本对应的标签,格式为数组,元素类型为整数

3:训练识别器后可以通过识别器的predict方法识别人脸。该方法对比样本的特征,给出最相近的结果和评分

label,confidence=recognizer.predict(src)

label 与样本匹配程度最高的标签纸

confidence 匹配程度最高的信用度评分,评分小于5000程度较高,0分表示两幅图像完全一样

下面以两个人的照片作为训练样本

待识别照片如下

程序输出如下

confidence=2327.1708678

Mike

程序对比样本特征分析得出,被识别的人物特征最接近的是KaiKai

部分代码如下

import cv2
import numpy as np
photos = list()  # 样本图像列表
lables = list()  # 标签列表
photos.append(cv2.imread("face\\Mike1.png", 0))  # 记录第1张人脸图像
lables.append(0)  # 第1张图像对应的标签
photos.append(cv2.imread("face\\Mike2.png", 0))  # 记录第2张人脸图像
lables.(0)  # 第2张图像对应的标签
photos.append(cv2.imread("face\\Mike3.png", 0))  # 记录第3张人脸图像
lables.append(0)  # 第3张图像对应的标
photos.append(cv2.imread("face\\kaikai1.png", 0))  # 记录第4张人脸图像
lables.append(1)  # 第4张图像对应的标签
photos.appen(.imread("face\\kaikai2.png", 0))  # 记录第5张人脸图像
lables.append(1)  # 第5张图像对应的标签
photos.apv2.imread("face\\kaikai3.png", 0))  # 记录第6张人脸图像
lables.append(1)  # 第6张图像对应的标签
names = {"0": "Mike", "1": "kaikai"}  # 标签对应的名称字典
recognizer = cv2.face.FisherFaceRecognizer_create()  # 创建线性判别分析识别器
recognizer.train(photos, np.array(lables))  # 识别器开始训练
i = cv2.imrad("face\\Mike4.png", 0)  # 待识别的人脸图像
label, confdce = recognizer.predict(i)  # 识别器开始分析人脸图像
print("cofidence = " + str(confidence))  # 打印评分
print(name[strbe)  # 数组字典里标签对应的名字
cv2.waitKey()  # 按下何键盘按键后
cv2.destroyAllWindows()  # 释放所有窗体

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
工智能 - 人脸识别:发展历史、技术全解与实战
工智能 - 人脸识别:发展历史、技术全解与实战
24 1
|
2月前
|
算法 API 计算机视觉
[opencv学习笔记] jiazhigang 30讲源码C++版本(含Makefile)
[opencv学习笔记] jiazhigang 30讲源码C++版本(含Makefile)
26 0
|
15天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
39 6
|
2月前
|
算法 安全 搜索推荐
深入浅出:使用Python实现人脸识别系统
在当今数字化时代,人脸识别技术已成为安全验证、个性化服务等领域的关键技术。本文将引导读者从零开始,逐步探索如何利用Python和开源库OpenCV来构建一个基础的人脸识别系统。本文不仅会详细介绍环境搭建、关键算法理解,还会提供完整的代码示例,帮助读者理解人脸识别的工作原理,并在实际项目中快速应用。通过本文,您将能够掌握人脸识别的基本概念、关键技术和实现方法,为进一步深入学习和研究打下坚实的基础。
|
1天前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
10 0
|
8天前
|
机器学习/深度学习 算法 自动驾驶
opencv python 图片叠加
【4月更文挑战第17天】
|
17天前
|
编解码 计算机视觉 Python
opencv 图像金字塔(python)
opencv 图像金字塔(python)
|
17天前
|
算法 Serverless 计算机视觉
opencv 直方图处理(python)
opencv 直方图处理(python)
|
1月前
|
机器学习/深度学习 算法 PyTorch
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
57 2
|
2月前
|
C++ 计算机视觉 Python
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
38 0
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)