首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LBPH人脸识别

LBPH人脸识别

作者头像
裴来凡
发布2022-05-28 16:38:29
发布2022-05-28 16:38:29
11.4K00
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
import cv2
import numpy as np
images=[]
images.append(cv2.imread('C:/Users/xpp/Desktop/coins.png',cv2.IMREAD_GRAYSCALE))#原始图像
images.append(cv2.imread('C:/Users/xpp/Desktop/coins.png',cv2.IMREAD_GRAYSCALE))#原始图像
images.append(cv2.imread('C:/Users/xpp/Desktop/Lena.png',cv2.IMREAD_GRAYSCALE))#原始图像
images.append(cv2.imread('C:/Users/xpp/Desktop/Lena.png',cv2.IMREAD_GRAYSCALE))#原始图像
labels=[0,0,1,1]#图像标签
recognizer=cv2.face.LBPHFaceRecognizer_create()#LBPH人脸识别
recognizer.train(images,np.array(labels))#模型训练
predict_image=cv2.imread('C:/Users/xpp/Desktop/face.png',cv2.IMREAD_GRAYSCALE)#原始图像
label,confidence=recognizer.predict(predict_image)#模型预测
print("label=",label)
print("confidence=",confidence)

label= 1 confidence= 55.412086974812155

算法:LBPH(Local Binary Patterns Histogram,局部二值模式直方图)模型是基于LBP (Local Binary Pattern,局部二值模式)的算法。

例子:

设定阈值为76,对其8邻域像素进行二值化处理:

128>76:1

36<76:0

251>76:1

48<76:0

9<76:0

11<76:0

213>76:1

99>76:1

二值化后,从当前像素点的正上方开始,以顺时针为序得到二进制序列:01011001

二进制序列“01011001”转换为所对应的十进制数“89”:

图像逐像素用以上方式进行处理,得到LBP特征图像,这个特征图像的直方图称为LBPH,或称为LBP直方图。

retval=cv2.face.LBPHFaceRecognizer_create([, radius[, neighbors[,
 grid_x[, grid_y[, threshold]]]]])

  • radius表示半径,默认值为1
  • neighbors表示邻域点个数
  • grid_x表示将LBP特征图像划分为一个个单元格时,每个单元格在水平方向上的像素个数
  • grid_y表示将LBP特征图像划分为一个个单元格时,每个单元格在垂直方向上的像素个数
  • threshold表示在预测时所使用的阈值,如果大于该阈值,那么没有识别到任何目标对象

None=cv2.face_FaceRecognizer.train(src, labels)

  • src表示输入图像
  • labels表示标签

label, confidence=cv2.face_FaceRecognizer.predict(src)

  • src表示输入图像

注意:置信度评分用来衡量识别结果与原有模型之间的距离。0表示完全匹配,小于50的值表示可以接受,大于80表示差别较大。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档