import os
import cv2
import numpy as np
from PIL import Image
recognizer=cv2.createLBPHFaceRecognizer();
path='dataSet'
def getImagesWithID(path):
imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
faces=[]
IDs=[]
for imagePath in imagePaths:
faceImg=Image.open(imagePath).convert('L');
faceNp=np.array(faceImg,'uint8')
ID=int(os.path.split(imagePath)[-1].split('.')[1])
faces.append(faceNp)
print ID
IDs.append(ID)
cv2.imshow("training",faceNp)
cv2.waitKey(10)
return np.array(IDs), faces
Ids,faces=getImagesWithID(path)
recognizer.train(faces,Ids)
recognizer.save('recognizer/trainingData.yml')
cv2.destroyAllWindows()
回溯(最近通话最近一次):
文件“ C:\ Users \ Documents \ basic \ engine \ trainer.py”,第6行,在 识别器= cv2.createLBPHFaceRecognizer(); AttributeError:“模块”对象没有属性“ createLBPHFaceRecognizer”
答案 0 :(得分:1)
如here所述,您必须获取并构建opencv_contrib回购。然后,您可以使用子模块“ face”。
或使用pip
安装
$ pip install opencv-contrib-python
然后,您可以像recognizer=cv2.face.LBPHFaceRecognizer_create()
一样使用,好像它们已更改方法的名称一样。如果仍有问题,可以使用
import cv2
print (help(cv2.face))
其中揭示了所有可用的方法。我以这种方式找到了更改的名称。