import cv2
import numpy as np
import os
from PIL import Image
Face_recognizer = cv2.face.LBPHFaceRecognizer_create()
faces_path = 'E:/Django/smartAttendance/facedataset'
if not os.path.exists('./face_recognizer'):
os.makedirs('./face_recognizer')
def fetchFacesID (faces_path):
photo_paths = [os.path.join(faces_path,f) for f in os.listdir(faces_path)]
faces = []
Student_ID = []
for image in photo_paths:
face_img = Image.open(image) .convert('L')
face_np = np.asarray(face_img, 'uint8')
ID = int(os.path.split(image)[-1].split('.')[1])
faces.append(face_np)
Student_ID.append(ID)
cv2.imshow("Training images", face_np)
cv2.waitKey(10)
return np.asarray(Student_ID), faces
Student_ID, faces = fetchFacesID(faces_path)
Face_recognizer.train(Student_ID, faces)
Face_recognizer.write('face_recognizer/trainedDataset.yml')
cv2.destroyAllWindows()
我正在尝试训练我的数据集,并希望在识别出面部后显示特定学生的姓名,但是在训练过程中出现以下错误。谁能帮我吗?
这是错误:
Traceback (most recent call last):
File "E:/Django/smartAttendance/train_dataset.py", line 24, in <module>
Student_ID, faces = fetchFacesID(faces_path)
File "E:/Django/smartAttendance/train_dataset.py", line 17, in fetchFacesID
ID = int(os.path.split(image)[-1].split('.')[1])
ValueError: invalid literal for int() with base 10: 'None'
打印os.path.split(image)[-1].split('.')[1]
。在for循环的某个时刻,此表达式的值被评估为None,而python无法将None转换为int。