在Windows 10中使用OpenCV 2.4.1和python 2.7.15属性错误:'moduleobject没有属性'createLBPHFaceRecognizer'

时间:2018-07-26 15:43:28

标签: python python-2.7 opencv

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”

1 个答案:

答案 0 :(得分:1)

here所述,您必须获取并构建opencv_contrib回购。然后,您可以使用子模块“ face”。

或使用pip安装

$ pip install opencv-contrib-python

然后,您可以像recognizer=cv2.face.LBPHFaceRecognizer_create()一样使用,好像它们已更改方法的名称一样。如果仍有问题,可以使用

进行进一步调查
import cv2
print (help(cv2.face))

其中揭示了所有可用的方法。我以这种方式找到了更改的名称。