#python #opencv
#python #opencv
Вопрос:
import os
import cv2
import numpy as np
from PIL import Image
recognizer = cv2.face.LBPHFaceRecognizer_create()
detector= cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
def getImagesAndLabels(path):
imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
faceSamples=[]
Ids=[]
for imagePath in imagePaths:
pilImage=Image.open(imagePath).convert('L')
imageNp=np.array(pilImage,'uint8')
Id=int(os.path.split(imagePath)[-1].split(".")[1])
faces=detector.detectMultiScale(imageNp)
for (x,y,w,h) in faces:
faceSamples.append(imageNp[y:y h,x:x w])
Ids.append(Id)
return faceSamples,Ids
faces,Ids = getImagesAndLabels('dataSet')
recognizer.train(faces, np.array(Ids))
recognizer.save('trainner/trainner.yml')
Когда я запускаю приведенный выше код, он выдает ошибку, в которой указано, что
Экземпляр модуля не имеет элемента LBHPFaceRecognizer_create()
Как мне исправить эту ошибку?
Ответ №1:
Попробуйте установить пакет opencv-contrib-python,
pip install opencv-contrib-python
Редактировать 1:
Используете ли вы более старую версию пакета, если да, изменилось ли имя модуля,https://github.com/opencv/opencv/issues/7187
Вы можете быстро проверить, какие модули доступны в cv2.face
пакете.
>>> import cv2
>>> dir(cv2.face)
['BIF_create', 'EigenFaceRecognizer_create', 'FisherFaceRecognizer_create', 'LBPHFaceRecognizer_create', 'MACE_create', 'MACE_load', 'StandardCollector_create', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'createFacemarkAAM', 'createFacemarkKazemi', 'createFacemarkLBF', 'drawFacemarks', 'getFacesHAAR', 'loadDatasetList', 'loadFacePoints', 'loadTrainingData']
Комментарии:
1. Я уже установил opencv-contrib-python, но проблема по-прежнему сохраняется.
2. Привет, спасибо. Функция lbphacerecognizer_create() присутствует в cv2.face, но все равно выдает ошибку, что экземпляр модуля не имеет элемента lbphacerecognizer_create()