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]]]]])
None=cv2.face_FaceRecognizer.train(src, labels)
label, confidence=cv2.face_FaceRecognizer.predict(src)
注意:置信度评分用来衡量识别结果与原有模型之间的距离。0表示完全匹配,小于50的值表示可以接受,大于80表示差别较大。
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!