Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

AttributeError: 'module' object has no attribute 'face'

I got an error when running opencv in Python on raspberry pi.

I tried to find and apply it to fix the error, but it did not work out. I also confirmed that the module "face" is in the file opencv_contrib-3.3.0. I do not know why for some reason.

error 1

Traceback (most recent call last): File "training.py", line 13, in recognizer = cv2.face.createLBPHFaceRecognizer() AttributeError: 'module' object has no attribute 'face'

error 2

Traceback (most recent call last): File "training.py", line 13, in help(cv2.face) AttributeError: 'module' object has no attribute 'face'

error3

Traceback (most recent call last): File "training.py", line 13, in help(cv2.face.createLBPHFaceRecognizer) AttributeError: 'module' object has no attribute 'face'

python : 3.5.3 opencv-3.3.0 opencv_contrib-3.3.0

source code

Import OpenCV2 for image processing

Import os for file path

import cv2, os

Import numpy for matrix calculation

import numpy as np

Import Python Image Library (PIL)

from PIL import Image

Create Local Binary Patterns Histograms for face recognization

recognizer = cv2.face.createLBPHFaceRecognizer()

Using prebuilt frontal face training model, for face detection

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

Create method to get the images and label data

def getImagesAndLabels(path):

# Get all file path
imagePaths = [os.path.join(path,f) for f in os.listdir(path)] 

# Initialize empty face sample
faceSamples=[]

# Initialize empty id
ids = []

# Loop all the file path
for imagePath in imagePaths:

    # Get the image and convert it to grayscale
    PIL_img = Image.open(imagePath).convert('L')

    # PIL image to numpy array
    img_numpy = np.array(PIL_img,'uint8')

    # Get the image id
    id = int(os.path.split(imagePath)[-1].split(".")[1])
    print(id)

    # Get the face from the training images
    faces = detector.detectMultiScale(img_numpy)

    # Loop for each face, append to their respective ID
    for (x,y,w,h) in faces:

        # Add the image to face samples
        faceSamples.append(img_numpy[y:y+h,x:x+w])

        # Add the ID to IDs
        ids.append(id)

# Pass the face array and IDs array
return faceSamples,ids

Get the faces and IDs

faces,ids = getImagesAndLabels('dataset')

Train the model using the faces and IDs

recognizer.train(faces, np.array(ids))

Save the model into trainer.yml

recognizer.save('trainer/trainer.yml')

AttributeError: 'module' object has no attribute 'face'

I got an error when running opencv in Python on raspberry pi.

I tried to find and apply it to fix the error, but it did not work out. I also confirmed that the module "face" is in the file opencv_contrib-3.3.0. I do not know why for some reason.

error 1

Traceback (most recent call last):
File "training.py", line 13, in
recognizer = cv2.face.createLBPHFaceRecognizer()
AttributeError: 'module' object has no attribute 'face'

'face'

error 2

Traceback (most recent call last):
File "training.py", line 13, in
help(cv2.face)
AttributeError: 'module' object has no attribute 'face'

'face'

error3

Traceback (most recent call last):
File "training.py", line 13, in
help(cv2.face.createLBPHFaceRecognizer)
AttributeError: 'module' object has no attribute 'face'

'face'

python : 3.5.3 opencv-3.3.0 opencv_contrib-3.3.0

source code

# Import OpenCV2 for image processing

processing # Import os for file path

path import cv2, os

os # Import numpy for matrix calculation

calculation import numpy as np

np # Import Python Image Library (PIL)

(PIL) from PIL import Image

Image # Create Local Binary Patterns Histograms for face recognization

recognization recognizer = cv2.face.createLBPHFaceRecognizer()

cv2.face.createLBPHFaceRecognizer() # Using prebuilt frontal face training model, for face detection

detection detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml");

cv2.CascadeClassifier("haarcascade_frontalface_default.xml"); # Create method to get the images and label data

data def getImagesAndLabels(path):

getImagesAndLabels(path):
# Get all file path
 imagePaths = [os.path.join(path,f) for f in os.listdir(path)]
 # Initialize empty face sample
 faceSamples=[]
 # Initialize empty id
 ids = []
 # Loop all the file path
 for imagePath in imagePaths:
  # Get the image and convert it to grayscale
 PIL_img = Image.open(imagePath).convert('L')
  # PIL image to numpy array
 img_numpy = np.array(PIL_img,'uint8')
  # Get the image id
 id = int(os.path.split(imagePath)[-1].split(".")[1])
 print(id)
  # Get the face from the training images
 faces = detector.detectMultiScale(img_numpy)
  # Loop for each face, append to their respective ID
 for (x,y,w,h) in faces:
 # Add the image to face samples
 faceSamples.append(img_numpy[y:y+h,x:x+w])
 # Add the ID to IDs
 ids.append(id)
 # Pass the face array and IDs array
 return faceSamples,ids

# Get the faces and IDs
faces,ids = getImagesAndLabels('dataset')
# Train the model using the faces and IDs
recognizer.train(faces, np.array(ids))
# Save the model into trainer.yml
recognizer.save('trainer/trainer.yml')

Get the faces and IDs

faces,ids = getImagesAndLabels('dataset')

Train the model using the faces and IDs

recognizer.train(faces, np.array(ids))

Save the model into trainer.yml

recognizer.save('trainer/trainer.yml')