OpenCV(3.4.1) Error: ValueError
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
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
)also, please use forward slashes in pathnames, not backward ones.
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
there probably is no "trainer" dir. it won't magically create folders. (or you don't have permission)