2017-07-27 3 views
-1

Ich habe ValueError: invalid literal for int() with base 10: '.DS' Fehler. Ich suche nach Lösungen für einen Tag, aber ich konnte es nicht beheben. Mein Verzeichnis ist nicht leer. Ich versuche einen Gesichts-Erkenner mit OpenCV zu trainieren. Ich versuche, Fotos von Gesichtern aus meinem Verzeichnis zu bekommen, aber das kann ich nicht.Python OpenCV Invalid Literal Fehler

Mein Code:

images = [] 
labels = [] 
for file in os.listdir('train/'): 
    image = cv2.imread('train/'+file, 0) 
    images.append(image) 
    labels.append(int(file.split('_')[0])) 

Fotos in Zug benannt ist 1_001.pmg, 1_002.pmg und so weiter. Ich suche deine Hilfe für mein dummes Problem. Vielen Dank!

ps. Dieser Code ist aus der Antwort von @Fabian hier how to notify user if there are common faces detected between two directories with python and opencv

+0

Was genau ist unklar von Stack-Trace Sie erhalten haben? Es klingt für mich ziemlich offensichtlich, '.DS' ist nicht zu int intakt. Es gibt nur einen Platz in Ihrem Code, an dem Sie die letzte Zeile der 'for'-Schleife konvertieren. Beachten Sie, dass Dateinamen, die mit Punkten vorangestellt sind, in den meisten '* nix'-Systemen als _hidden_Dateien klassifiziert werden. –

+0

Danke für Ihre Antwort, ich brauche es als Integer, da die Funktion faceRecognition.train dies benötigt. Also muss ich es in Integer umwandeln – boyaronur

Antwort

0

Das Problem ist mit os.listdir('train/'), da es eine Liste aller Dateien in bestimmten Verzeichnis zurückgibt, die Sie versteckt werden können, und '.DS_Store' ist auch unter den Dateien, die Sie benötigen Überprüfen Sie, ob die Zeichenfolge im zurückgegebenen Ende mit .png vor der Übergabe an cv::imread übergeben wird.

images = [] 
labels = [] 
for file_name in os.listdir('train/'): 
    if file_name.endswith(".png"): 
     image = cv2.imread('train/'+file_name, 0) 
     images.append(image) 
     labels.append(int(file_name.split('_')[0]))