尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【深度学习】OpenCV 人脸识别实战:LBPH 算法实现简单人脸识别

【深度学习】OpenCV 人脸识别实战:LBPH 算法实现简单人脸识别
📅 发布时间:2026/7/3 3:45:03

文章目录

  • 完整代码一览
  • 导入库与安装说明
  • 准备训练数据(图像和标签)
  • 创建 LBPH 识别器
  • 训练模型
  • 预测(识别)新图像
  • 输出结果

完整代码一览

import cv2 import numpy as np # 提前训练的人脸照片(灰度图) images=[]images.append(cv2.imread('pyy1.png',cv2.IMREAD_GRAYSCALE))images.append(cv2.imread('pyy2.png',cv2.IMREAD_GRAYSCALE))images.append(cv2.imread('qzl1.png',cv2.IMREAD_GRAYSCALE))images.append(cv2.imread('qzl2.png',cv2.IMREAD_GRAYSCALE))labels=[0,0,1,1]dic={0:'pyy',1:'qzl',-1:'无法识别'}predict_image=cv2.imread('pyy.png',cv2.IMREAD_GRAYSCALE)# 待识别人脸 # 创建 LBPH 识别器(设置阈值) recognizer=cv2.face.LBPHFaceRecognizer_create(threshold=80)# 训练模型 recognizer.train(images,np.array(labels))# 预测 label,confidence=recognizer.predict(predict_image)print('这人是:',dic[label])print('置信度:',confidence)

导入库与安装说明

import cv2 import numpy as np

cv2.face.LBPHFaceRecognizer_create 属于 OpenCV 的 contrib 扩展模块。如果你安装的是标准版 opencv-python,会报错 module ‘cv2’ has no attribute ‘face’。请使用以下命令安装:

bash

pip install opencv-contrib-python

如果已经安装了标准版,需要先卸载再安装 contrib 版。

准备训练数据(图像和标签)

python images=[]images.append(cv2.imread('pyy1.png',cv2.IMREAD_GRAYSCALE))images.append(cv2.imread('pyy2.png',cv2.IMREAD_GRAYSCALE))images.append(cv2.imread('qzl1.png',cv2.IMREAD_GRAYSCALE))images.append(cv2.imread('qzl2.png',cv2.IMREAD_GRAYSCALE))labels=[0,0,1,1]dic={0:'pyy',1:'qzl',-1:'无法识别'}




我们准备了 4 张人脸图像,分别是 pyy1.png、pyy2.png,qzl1.png、qzl2.png。

labels 是对应的数字标签:0 代表 pyy,1 代表 qzl。

dic 是一个字典,用于将数字标签映射回人名,方便打印。-1 是识别器返回的“无法识别”标签。

注意:这些图片应该是已经裁剪好的人脸图像(只含脸部区域),尺寸可以不一致(LBPH 会内部处理)。实际项目中,你需要先用人脸检测器裁剪出人脸。

创建 LBPH 识别器

recognizer=cv2.face.LBPHFaceRecognizer_create(threshold=80)

cv2.face.LBPHFaceRecognizer_create() 创建一个 LBPH 识别器对象。

threshold=80:这是识别阈值。当识别器预测时,如果计算出的置信度(距离)大于这个值,则认为“不认识”,返回标签 -1。阈值越小,识别越严格,但容易误拒;阈值越大,容忍度越高,但可能把陌生人认成熟人。80 是常用值,你可以根据实际情况调整。

训练模型

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

train() 方法接受两个参数:

images:训练图像列表(灰度图)。

labels:对应的标签数组(NumPy 格式)。

训练过程会计算每张图像的 LBPH 特征直方图,并存储起来,供后续识别时比对。

预测(识别)新图像

predict_image=cv2.imread('pyy.png',cv2.IMREAD_GRAYSCALE)label,confidence=recognizer.predict(predict_image)

predict() 接受一张待识别的灰度图像,返回两个值:

label:识别出的标签(如果置信度超过阈值,则返回 -1)。

confidence:置信度评分,数值越小表示匹配度越高(距离越近)。一般小于 50 表示比较可信,50~80 可能勉强,超过阈值则视为不认识。

输出结果

print('这人是:',dic[label])print('置信度:',confidence)

通过字典映射标签到人名,如果标签是 -1,则显示“无法识别”。

运行结果:

这人是: qzl 置信度:77.59353695603815

相关新闻

  • 微信公众号授权登录全流程实战:从OpenID到JWT Token的完整实现
  • AutoScreenshot深度解析:跨平台自动截图工具的高效应用指南
  • Winform加密算法

最新新闻

  • 心脏瓣膜病手术费用与医保报销解析——开胸 vs TAVR的经济学考量
  • M1 Mac安装TensorFlow完整指南:arm64 Python+Metal加速实操
  • 本地开发环境 Neo4j 部署全套方案(Windows/macOS)
  • 实用工具推荐:2026年素质培训小程序制作软件有哪些?
  • [SmoothWave节点]原理解析与实际应用
  • 放下固化评判标准,接纳孩童身上与众不同的思维方式

日新闻

  • JMeter接口测试实战:从核心元件到复杂场景构建
  • Java Applet版刽子手游戏源码:含完整项目结构、吊杆绘图与胜负逻辑
  • 使用Apache JMeter对RoadRunner PHP应用进行性能测试与调优指南

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号