'''' Training Multiple Faces stored on a DataBase: ==> Each face should have a unique numeric integer ID as 1, 2, 3, etc ==> LBPH computed model will be saved on trainer/ directory. (if it does not exist, pls create one) ==> for using PIL, install pillow library with "pip install pillow" Based on original code by Anirban Kar: https://github.com/thecodacus/Face-Recognition Developed by Marcelo Rovai - MJRoBot.org @ 21Feb18 ''' import cv2 import numpy as np from PIL import Image import os # Path for face image database path = 'dataset' recognizer = cv2.face.LBPHFaceRecognizer_create() detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml"); # function to get the images and label data def getImagesAndLabels(path): imagePaths = [os.path.join(path,f) for f in os.listdir(path)] faceSamples=[] ids = [] for imagePath in imagePaths: PIL_img = Image.open(imagePath).convert('L') # convert it to grayscale img_numpy = np.array(PIL_img,'uint8') id = int(os.path.split(imagePath)[-1].split(".")[1]) faces = detector.detectMultiScale(img_numpy) for (x,y,w,h) in faces: faceSamples.append(img_numpy[y:y+h,x:x+w]) ids.append(id) return faceSamples,ids print ("\n [INFO] Training faces. It will take a few seconds. Wait ...") faces,ids = getImagesAndLabels(path) recognizer.train(faces, np.array(ids)) # Save the model into trainer/trainer.yml recognizer.write('trainer/trainer.yml') # recognizer.save() worked on Mac, but not on Pi # Print the numer of faces trained and end program print("\n [INFO] {0} faces trained. Exiting Program".format(len(np.unique(ids)))) 翻译各代码的意思
时间: 2024-02-14 16:23:00 浏览: 119
struts2权威指南
这段代码是一个人脸识别的程序,用于训练多个存储在数据库中的人脸图像。程序使用了LBPH算法,将计算出的模型存储在trainer目录下。程序需要使用PIL库,可以使用"pip install pillow"进行安装。代码中定义了一个函数getImagesAndLabels,用于获取图像和标签数据,函数会返回人脸图像和对应的ID。程序会将获取到的数据用于训练模型,训练完成后,将模型保存到trainer/trainer.yml文件中。最后,程序会输出训练的人脸数量,并退出程序。
阅读全文