Ask Your Question
0

OpenCV(3.4.1) Error: ValueError

asked 2018-04-21 02:24:38 -0600

pooja127 gravatar image

updated 2018-04-21 02:27:28 -0600

berak gravatar image

i am trying to execute following program

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

# Path for face image database
path = 'C:\pythonpractice\dataset'

recognizer = cv2.face.LBPHFaceRecognizer_create()
detector = cv2.CascadeClassifier("C:\opencv\sources\data\haarcascades\haarcascade_frontalface_alt2.xml");

# function to get the images and label data
def getImagesAndLabels(path):

    imagePaths = [os.path.join(path,f) for f in os.listdir(path)]     
    faceSamples=[]
    ids = []

    for imagePath in imagePaths:

        PIL_img = Image.open(imagePath).convert('L') # convert it to grayscale
        img_numpy = np.array(PIL_img,'uint8')

        id = int(os.path.split(imagePath)[-1].split(".")[1])
        faces = detector.detectMultiScale(img_numpy)

        for (x,y,w,h) in faces:
            faceSamples.append(img_numpy[y:y+h,x:x+w])
            ids.append(id)

    return faceSamples,ids

print ("\n [INFO] Training faces. It will take a few seconds. Wait ...")
faces,ids = getImagesAndLabels(path)
recognizer.train(faces, np.array(ids))

# Save the model into trainer/trainer.yml
recognizer.write('trainer/trainer.yml') # recognizer.save() worked on Mac, but not on Pi

# Print the numer of faces trained and end program
print("\n [INFO] {0} faces trained. Exiting Program".format(len(np.unique(ids))))

While executing the program i am getting following error:

Traceback (most recent call last):
  File "new33.py", line 24, in <module>
    Ids,faces=getImagesWithID(path)
  File "new33.py", line 16, in getImagesWithID
    ID=int(os.path.split(imagePath)[-1].split('.')[1])
ValueError: invalid literal for int() with base 10: 'jpg'

What could be the reason for the error,how should i react to fix it? Thank you for your time and advise,

regards

pooja

edit retag flag offensive close merge delete

Comments

not an opencv problem at all.

you tried to convert 'jpg' to an integer, which does not work. in other words, your path splitting algo is broken, probably the image names do not match the assumption behind it.

( like: /somewhere/image.4.jpg)

berak gravatar imageberak ( 2018-04-21 02:34:06 -0600 )edit

also, please use forward slashes in pathnames, not backward ones.

berak gravatar imageberak ( 2018-04-21 02:35:31 -0600 )edit

Thank you for your time and advise,now getting another error as: OpenCV Error: Unspecified error (File can't be opened for writing!) in cv::face: :FaceRecognizer::write, file C:\projects\opencv-python\opencv_contrib\modules\fa ce\src\facerec.cpp, line 70 Traceback (most recent call last): File "new31.py", line 47, in <module> recognizer.write('trainer/trainer.yml') # recognizer.save() worked on Mac, b ut not on Pi cv2.error: C:\projects\opencv-python\opencv_contrib\modules\face\src\facerec.cpp :70: error: (-2) File can't be opened for writing! in function cv::face::FaceRec ognizer::write

pooja127 gravatar imagepooja127 ( 2018-04-21 03:45:49 -0600 )edit

there probably is no "trainer" dir. it won't magically create folders. (or you don't have permission)

berak gravatar imageberak ( 2018-04-21 03:57:45 -0600 )edit

1 answer

Sort by ยป oldest newest most voted
0

answered 2018-11-11 09:23:43 -0600

this may be because, you are passing a non int value in id while creating your datasets.

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2018-04-21 02:24:38 -0600

Seen: 1,603 times

Last updated: Apr 21 '18