首页 > 解决方案 > 在 Windows 10 中使用 OpenCV 2.4.1 和 python 2.7.15 属性错误:'moduleobject 没有属性'createLBPHFaceRecognizer'

问题描述

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.createLBPFaceRecognizer() 中;AttributeError:“模块”对象没有属性“createLBPHFaceRecognizer”

标签: pythonpython-2.7opencv

解决方案


如此处所述,您必须获取并构建opencv_contrib 存储库。然后你可以使用子模块“face”。

或使用安装它pip

$ pip install opencv-contrib-python

然后你可以使用 as recognizer=cv2.face.LBPHFaceRecognizer_create()as 看起来他们已经改变了方法的名称。如果您仍然遇到问题,您可以使用进一步调查它

import cv2
print (help(cv2.face))

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


推荐阅读