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

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

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

Local Binary Pattern Histofram简称LBPH,即局部二进制模式直方图,这是一种基于局部二进制模式算法,这种算法善于捕获局部纹理特征

开发者需要通过以下三种方法来完成人脸识别操作

1:通过cv2.face.LBPHFaceRecognizer_create()方法创建LBPH人脸识别器对象 语法如下

recognizer=cv2.face.LBPHFaceRecognizer_create(radius,neighbors,grid_x,grid_y,threshold)

radius:可选参数 圆形局部二进制模式的半径,建议使用默认值

neighbors:可选参数,圆形局部二进制模式的采样点数目,建议使用默认值

grid_x:可选参数 水平方向上的的单元格数,建议使用默认值

grid_y:可选参数 垂直方向上的的单元格数  建议使用默认值

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

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

recognizer.train(src,labels)

参数说明

recognizer 已有的LBPH人脸识别器对象

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

labels 样本对应的标签,格式为数组,元素类型为整数,数组长度必须与样本列表长度相同,样本与标签按照插入顺序一一对应

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

label,confidence=recognizer.predict(src)

参数说明

src 需要识别的人脸图像 该图像宽高必须与样本一致

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

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

下面使用LBPH识别人脸实战

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

待识别照片如下

程序输出如下

confidence=45.0823265

RuiRui

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

部分代码如下

import cv2
import numpy as np
photos = list()  # 样本图像列表
lables = list()  # 标签列表
photos.append(cv2.imread("face\\lxe1.png", 0))  # 记录第1张人脸图像
lables.append(0)  # 第1张图像对应的标签
photos.append(cv2.imread("face\\lxe2.png", 0))  # 记录第2张人脸图像
lables.append(0)  # 第2张图像对应的标签
photos.append(cv2.imread("face\\lxe3.png", 0))  # 记录第3张人脸图像
lables.append(0)  # 第3张图像对应的标签
photos.append(cv2.imread("face\\ruirui1.png", 0))  # 记录第4张人脸图像
lables.append(1)  # 第4张图像对应的标签
photos.append(cv2.imread("face\\ruirui2.png", 0))  # 记录第5张人脸图像
lables.append(1)  #图像对应的标签
photos.append(cv2.imread("face\\ruirui3.png", 0))  # 记录第6张人脸图像
lables.append(1)  # 第6张图像对应的标签
names = {"0": "LXE", "1": "RuiRui"}  # 标签对应的名称字典
recognier = cv2.face.LBPHFaceRecognizer_create()  # 创建LBPH识别器(photos, np.array(lables))  # 识别器开始训练
i = cv2.imread("face\\ruirui4.png", 0)  # 待识别的人脸图像
label, confience = recognizer.predict(i)  # 识别器开始分析人脸图像
print("confidee= " + str(confidence))  # 打印评分
print(names[str(lael)])  # 数组字典里标签对应的名字
cv2.waitKey()  #下任何键盘按键后
cv2.destroyAllWindows()  # 释放所有窗体

总结

人脸检测和人脸识别是相辅相成的,这是因为在进行人脸识别前,要先判断当前图像内是否出现了人脸,这个判断过程需要由人脸检测完成。只有在当前图像内检测到人脸,才能判断出这张人脸属于哪个人,这个判断是由人脸识别器完成的。因此,人脸识别指的是程序先在图像内检测人脸,再识别这张人脸属于哪个人的过程

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

相关文章
|
6月前
|
算法 计算机视觉
基于qt的opencv实时图像处理框架FastCvLearn实战
本文介绍了一个基于Qt的OpenCV实时图像处理框架FastCvLearn,通过手撕代码的方式详细讲解了如何实现实时人脸马赛克等功能,并提供了结果展示和基础知识回顾。
261 7
|
6月前
|
文字识别 计算机视觉 开发者
基于QT的OCR和opencv融合框架FastOCRLearn实战
本文介绍了在Qt环境下结合OpenCV库构建OCR识别系统的实战方法,通过FastOCRLearn项目,读者可以学习Tesseract OCR的编译配置和在Windows平台下的实践步骤,文章提供了技术资源链接,帮助开发者理解并实现OCR技术。
395 9
基于QT的OCR和opencv融合框架FastOCRLearn实战
|
2月前
|
XML 机器学习/深度学习 人工智能
使用 OpenCV 和 Python 轻松实现人脸检测
本文介绍如何使用OpenCV和Python实现人脸检测。首先,确保安装了OpenCV库并加载预训练的Haar特征模型。接着,通过读取图像或视频帧,将其转换为灰度图并使用`detectMultiScale`方法进行人脸检测。检测到的人脸用矩形框标出并显示。优化方法包括调整参数、多尺度检测及使用更先进模型。人脸检测是计算机视觉的基础技术,具有广泛应用前景。
91 10
|
8月前
|
计算机视觉 Python
opencv识别颜色
opencv识别颜色
115 0
|
5月前
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
200 7
|
6月前
|
计算机视觉
基于QT的opencv插件框架qtCvFrameLearn实战
这篇文章详细介绍了如何基于Qt框架开发一个名为qtCvFrameLearn的OpenCV插件,包括项目配置、插件加载、Qt与OpenCV图像转换,以及通过各个插件学习OpenCV函数的使用,如仿射变换、卡通效果、腐蚀、旋转和锐化等。
108 10
|
6月前
|
机器学习/深度学习 计算机视觉 Python
opencv环境搭建-python
本文介绍了如何在Python环境中安装OpenCV库及其相关扩展库,包括numpy和matplotlib,并提供了基础的图像读取和显示代码示例,同时强调了使用Python虚拟环境的重要性和基本操作。
|
8月前
|
机器学习/深度学习 数据采集 算法
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
|
7月前
|
机器学习/深度学习 人工智能 监控
利用Python和OpenCV实现实时人脸识别系统
【8月更文挑战第31天】本文将引导您了解如何使用Python结合OpenCV库构建一个简易的实时人脸识别系统。通过分步讲解和示例代码,我们将探索如何从摄像头捕获视频流、进行人脸检测以及识别特定个体。本教程旨在为初学者提供一条明晰的学习路径,帮助他们快速入门并实践人脸识别技术。
|
8月前
|
机器学习/深度学习 TensorFlow 数据处理
使用Python实现深度学习模型:医学影像识别与疾病预测
【7月更文挑战第24天】 使用Python实现深度学习模型:医学影像识别与疾病预测
117 4