facial recognition using opencv 3.1.0 on raspberry pi3

672 Views Asked by At

I am using opencv 3.1.0, python on raspberry pi 3 for facial recoginition and I used the code below but I am getting an error please how do I fix this I have followed numerous sites on how to fix it but none of them worked

ERROR

recognizer= cv2.createLBPHFaceRecognizer()

AttributeError: module ‘cv2’ has no attribute

CODE

import cv2,os
import numpy as np
from PIL import Image

recognizer = cv2.createLBPHFaceRecognizer()
detector= cv2.CascadeClassifier("haarcascade_frontalface_default.xml");

def getImagesAndLabels(path):
    #get the path of all the files in the folder
    imagePaths=[os.path.join(path,f) for f in os.listdir(path)] 
    #create empth face list
    faceSamples=[]
    #create empty ID list
    Ids=[]
    #now looping through all the image paths and loading the Ids and the images
    for imagePath in imagePaths:
        #loading the image and converting it to gray scale
        pilImage=Image.open(imagePath).convert('L')
        #Now we are converting the PIL image into numpy array
        imageNp=np.array(pilImage,'uint8')
        #getting the Id from the image
        Id=int(os.path.split(imagePath)[-1].split(".")[1])
        # extract the face from the training image sample
        faces=detector.detectMultiScale(imageNp)
        #If a face is there then append that in the list as well as Id of it
        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')
1

There are 1 best solutions below

0
On

Started from OpenCV 3, cv2.createLBPHFaceRecognizer() has been moved under cv2.face module as cv2.face.createLBPHFaceRecognizer(). The AttributeError above just said opencv can't find the module.

The cv2.face module is now moved to opencv_contrib modules. You need to build the opencv[1] with opencv_contrib[2] from source if you can't find a suitable raspbian or debian based binary.