import os
import cv2
import cv2 as cv
from PIL import Image
import numpy as np
def getImageAndLabels(path):
faceSamples = []
ids = []
imagePaths = [os.path.join(path, f) for f in os.listdir(path)]
# print(imagePaths)
face_detector = cv2.CascadeClassifier('D:/opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml')
for imagePath in imagePaths:
PIL_img = Image.open(imagePath).convert('L')
img_numpy = np.array(PIL_img, 'uint8')
faces = face_detector.detectMultiScale(img_numpy)
id = int(os.path.split(imagePath)[1].split('.')[0])
for x, y, w, h in faces:
ids.append(id)
faceSamples.append(img_numpy[y:y + h, x + w])
print('id', ids)
print('fs', faceSamples)
return faceSamples, ids
if name == 'main':
path = 'C:/Users/86183/PycharmProjects/pythonProject1/wode/'
faces,ids=getImageAndLabels(path)
recognizer=cv2.face.LBPHFaceRecognizer_create()
recognizer.train(faces,np.array(ids))
recognizer.write('D:/opencv/trainer.yml')
报错如下
Traceback (most recent call last):
File "C:\Users\86183\PycharmProjects\pythonProject1\09shujvxunlian.py", line 31, in
recognizer.train(faces,np.array(ids))
cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\core\src\matrix.cpp:250: error: (-215:Assertion failed) s >= 0 in function 'cv::setSize'