lbp人脸识别算法,基于Python的人脸识别
基于LBPH的人脸识别操作原理
1.LBPH(Local Binary Pattern Histogram)将检测到的人脸划分为小单元,与模型中对应的单元进行比较,为每个区域的匹配值生成直方图。
由于这种方法的灵活性,LBPH是唯一允许模型样本人脸和检测到的人脸在形状和大小上不同的人脸识别算法。
2.在调整后的区域调用predict()函数。
predict()函数返回一个包含两个元素的数组:第一个元素是被识别个体的标签,第二个元素是置信度得分。
3.所有算法都有一个置信度阈值。置信度得分用于衡量识别的人脸与原始模型之间的差异,0表示完全匹配。有时候你可能不想保留所有的识别结果,需要进一步的处理,所以你可以用自己的算法来估计识别置信度得分。
4.LBPH一个好的识别参考值应该低于50,任何高于80的参考值都会被认为是低置信度得分。
基于LBPH的人脸识别操作实例
importcv2
#加载训练数据集文件
#获取人脸识别对象
recognizer=cv2 . face . lbphfacecognizer _ create()
#读取训练数据
recognizer . read( trainer/trainer . yml )
#准备识别图片
img=cv2.imread(6.pgm )
#将图片灰度化
gray=cv2.cvtColor(img,cv2。COLOR_BGR2GRAY)
#加载特征数据
人脸检测器=cv2。cascade classifier( d :/Python/opencv/sources/data/Haar cascades
/Haar scade _ front alface _ default . XML’)
# Parameter: scaleFactor:图片缩放多少,minNeighbors:至少检测多少次,
Size minSizemaxSize:当前检测区域的最小面积
faces=face _ detector . detect multi scale(gray)# scale factor=1.01,minNeighbors=3,
maxSize=(33,33),minSize=(28,28)
#获取面部特征值
对于x,y,w,hinfaces:
cv2.rectangle(img,(x,y),(x w,y h),(0,255,0),厚度=2)
cv2.circle(img,(x w//2,y h//2),半径=w//2,厚度=2,颜色=(0,0,255))
#人脸识别
id,confidence=recognizer . predict(gray[y :y h,x:x w])
打印(标签id: ,id,置信度得分:,置信度)
#显示图片
cv2.imshow(result ,img)
2.总是显示CVWAITKEY (0) #
CV2。desroyalwindows()#释放资源
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。