‘’’
import os
import cv2
from PIL import Image
import numpy as np
def getImageAndLabel(path):
# 储存人脸数据
facesSamples = []
# 储存姓名数据
ids = []
# 储存图片信息(通过路径将 图片全部存储到变量imagePaths中)
imagePaths = [os.path.join(path, f) for f in os.listdir(path)]
# 加载分类器
face_detector = cv2.CascadeClassifier(
‘C:/Users/ASUS-PC/PycharmProjects/pythonProject4/venv/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml’)
# 遍历列表中的图片(保存图片和人的对应关系)
for imagePath in imagePaths:
# 打开图片,灰度化PIL有九种不同的模式:1(黑白:0和1),L(灰度:像素点0-255),P,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