I used the following code for face face recognition using OpenCV python. Although I had resized the images I still get an error as images should be resized. How to solve it ?
import cv2, os
import numpy as np
recognizer = cv2.createFisherFaceRecognizer() # Eigenface Recognizer
def get_images_and_labels(path):
   image_paths = [os.path.join(path, f) for f in os.listdir(path)]
   images = []
   labels = []
   for image_path in image_paths:
      image_pil = cv2.imread(image_path,0)
      image = np.array(image_pil, 'uint8')
      indx = os.path.split(image_path)[1].split(".")[0]
      images.append(image)
      labels.append(int(indx))
      cv2.imshow("Adding faces to traning set...", image_pil)
      cv2.waitKey(50)
 return images, labels
 path ='G:ResizingFisher Facesdata'
 images, labels = get_images_and_labels(path)
 cv2.destroyAllWindows()
recognizer.train(images, np.array(labels))
print "The system has trained successfully."
cascPath = "G:ResizinglBPHhaarcascadeshaarcascade_frontalface_default.xml"
faceCascade = cv2.CascadeClassifier(cascPath)
cap = cv2.VideoCapture(0)
while(True):
   ret, frame = cap.read()
   gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
   faces = faceCascade.detectMultiScale(
    gray,
    scaleFactor=1.1,
    minNeighbors=10,
    minSize=(30, 30),
    flags = cv2.cv.CV_HAAR_SCALE_IMAGE
      )
   for (x, y, w, h) in faces:
     cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
     cv2.imshow('frame',frame)
   for (x, y, w, h) in faces:
      resized = cv2.resize(gray[y: y + h, x: x + w], (200,200), interpolation = cv2.INTER_AREA)
      img=cv2.equalizeHist(resized)
      nbr_predicted, conf = recognizer.predict(img)
      print "Index {} is Correctly Recognized with confidence {}".format(nbr_predicted, conf)
cap.release()
cv2.destroyAllWindows()
The error is
"OpenCV Error: Bad argument (Wrong input image size. Reason: Training and Test images must be of equal size! Expected an image with 1228800 elements, but got 40000.) 
      in cv::Fisherfaces::predict, file ........opencvmodulescontribsrcfacerec.cpp, line 623
Traceback (most recent call last):
  File "G:/Resizing/Fisher Faces/FisherFaces.py", line 79, in <module>
    nbr_predicted, conf = recognizer.predict(img)
cv2.error: ........opencvmodulescontribsrcfacerec.cpp:623: error: (-5) Wrong input image size. Reason: Training and Test images must be of equal size! Expected an image with 1228800 elements, but got 40000. in function cv::Fisherfaces::predict"
 
Aucun commentaire:
Enregistrer un commentaire