python基于LBPH的人臉識別操作
基于LBPH的人臉識別操作原理
1、LBPH(LocalBinaryPatternHistogram)將檢測到的人臉分為小單元,并將其與模型中的對應單元進行比較,對每個區域的匹配值產生一個直方圖。
由于這種方法的靈活性,LBPH是唯一允許模型樣本人臉和檢測到的人臉在形狀、大小上可以不同的人臉識別算法。
2、調整后的區域中調用predict()函數
predict()函數返回兩個元素的數組:第一個元素是所識別個體的標簽,第二個是置信度評分。
3、所有的算法都有一個置信度評分閾值,置信度評分用來衡量所識別人臉與原模型的差距,0表示完全匹配。可能有時不想保留所有的識別結果,則需要進一步處理,因此可用自己的算法來估算識別的置信度評分。
4、LBPH一個好的識別參考值要低于50,任何高于80的參考值都會被認為是低的置信度評分。
基于LBPH的人臉識別操作實例
importcv2
#加載訓練數據集文件
#獲取人臉識別對象
recognizer=cv2.face.LBPHFaceRecognizer_create()
#讀取訓練數據
recognizer.read('trainer/trainer.yml')
#準備識別圖片
img=cv2.imread('6.pgm')
#將圖片灰度
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#加載特征數據
face_detector=cv2.CascadeClassifier('D:/Python/opencv/sources/data/haarcascades
/haarcascade_frontalface_default.xml')
#參數:scaleFactor(比例因子):圖片縮放多少,minNeighbors:至少檢測多少次,
minSizemaxSize:當前檢測區域的最小面積
faces=face_detector.detectMultiScale(gray)#scaleFactor=1.01,minNeighbors=3,
maxSize=(33,33),minSize=(28,28)
#獲取臉部特征值
forx,y,w,hinfaces:
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),thickness=2)
cv2.circle(img,(x+w//2,y+h//2),radius=w//2,thickness=2,color=(0,0,255))
#人臉識別
id,confidence=recognizer.predict(gray[y:y+h,x:x+w])
print('標簽id:',id,'置信評分:',confidence)
#顯示圖片
cv2.imshow('result',img)
cv2.waitKey(0)#一直顯示
cv2.destroyAllWindows()#釋放資源
以上就是python基于LBPH的人臉識別操作,希望能對大家有所幫助。更多Python學習教程請關注IT培訓機構:千鋒教育。