В настоящее время я работаю над обучением изображений для системы распознавания лиц. Я использую Python, OpenCV для этого. Я собрал образцы с веб-камеры, однако, размер образцов изображений отличается. Пример размера образцов изображений: 376 x 376, 412 x 412, 836 x 836.
Снимок экрана текущего рабочего каталога:
![enter image description here](https://i.stack.imgur.com/tXErf.png)
Образцы изображений сохраняются в основной папке с именем sampleImgFolder и в главной папке, указывающей c папку для каждого образца.
![enter image description here](https://i.stack.imgur.com/kU0rN.png)
Исходный код для тренировочного образа
import os
import cv2
import numpy as np
from PIL import Image
recognizer = cv2.face.LBPHFaceRecognizer_create()
targetImagesDirectory="sampleImgFolder/"
dataset = cv2.CascadeClassifier('resources/haarcascade_frontalface_default.xml')
def getImageWithID(path):
#empty list to store processed data
sampleFaces = []
sampleFaceId = []
os.chdir(targetImagesDirectory)
for directory in os.listdir():
os.chdir(directory)
for files in os.listdir():
imagePath = '{}/{}'.format(os.getcwd(), files)
imagePil = Image.open(imagePath).convert('L')
imageNumpy = np.array(imagePil, 'uint8') #conversion of normal image to numpy array
#imageNumpy.astype(np.float32)
#detect face
faces = dataset.detectMultiScale(imageNumpy)
#extracting id from file name
id = files.split('_')
id = id[0].split('-')
id = id[2]
for (x, y, w, h) in faces:
sampleFaces.append(imageNumpy[y:y + h, x:x + w])
sampleFaceId.append(id)
os.chdir('../')
os.chdir('../')
return np.array(sampleFaceId), sampleFaces
print("reading images")
Ids,faces=getImageWithID(targetImagesDirectory)
print('reading completed')
recognizer.train(faces,Ids)
print("training")
#train the dataset. Create a file name trainningData.yml
recognizer.write('train/trainningData.yml')
cv2.destroyAllWindows()
При выполнении кода выше появляется следующая ошибка :
![enter image description here](https://i.stack.imgur.com/JibUA.png)