1. 程式人生 > 其它 >[人臉識別]09-人臉模型訓練

[人臉識別]09-人臉模型訓練

1.程式程式碼

#匯入CV模組

import cv2 as cv
import os
from PIL import Image
import numpy as np


def getImageAndLabels(path):

    #儲存人臉資料
    facesSamples=[]
    #儲存姓名資料
    ids=[]
    # 儲存圖片資訊
    imagePaths=[ os.path.join(path,f) for f in os.listdir(path)]

    print("files:",imagePaths)

    #載入分類器
    face_detector=cv.CascadeClassifier(cv.data.haarcascades+"
haarcascade_frontalface_default.xml") #遍歷列表中的圖片 for imagePath in imagePaths: #開啟圖片,灰度化,PIL有九種不同模式:1,l,p,rgb,rgba,cmyk,yCbCr,I,F PIL_img=Image.open(imagePath).convert('L') #將圖片轉換為陣列,以黑白深淺 img_numpy=np.array(PIL_img,'uint8') #獲取人臉特徵 faces=face_detector.detectMultiScale(img_numpy)
#獲取每張圖片的ID和新名 id=int(os.path.split(imagePath)[1].split('.')[0]) #預防無面容照片 for x,y,w,h in faces: ids.append(id) facesSamples.append(img_numpy[y:y+h,x:x+w]) print('id',id) print('fs',facesSamples) return facesSamples,ids if __name__ == '
__main__': #圖片路徑 root = os.getcwd() path=root+"/jm/" print("path:", path) #獲取影象陣列,id faces,ids=getImageAndLabels(path) #獲取訓練物件 recognizer=cv.face.LBPHFaceRecognizer_create() #執行訓練 recognizer.train(faces,np.array(ids)) #儲存訓練結果 print("write:", root+"/trainer/trainer.yml") recognizer.write(root+"/trainer/trainer.yml")

2結果

.