Python - Неверный литерал для int () с основанием 10: 'x' - PullRequest
0 голосов
/ 15 июня 2019

Я работаю над программой, которая распознает лица и блокирует компьютер, если в реальном времени существуют неизвестные лица. Сначала я собираю 21 изображение, а затем обучаю модель, но существует ошибка, когда программа сохраняет все изображения в локальном наборе данных, а затем «мой заголовок» - это ошибка в программе на

ID = int(os.path.split(imagePath)[-1].split('.')[1])

Я пытался установить numpy, подушку, последнюю версию opencv, opencv-python, последнюю версию python, pip3, cv2

def getImageWithID(path):
    imagePaths = [os.path.join(path,f) for f in os.listdir(path)]
    #print(f"{imagePaths}\n")
    for imagePath in imagePaths:
        faceImg = Image.open(imagePath).convert('L')
        #cv2.imshow('faceImg', faceImg)
        faceNp = np.array(faceImg, 'uint8')
        ID = int(os.path.split(imagePath)[-1].split('.')[1])
        #print(ID)

Я ожидаю, что программа сохранит результаты в файле .yml. Но программа не сохраняет записи тренера в файл .yml, потому что произошла ошибка, я надеюсь, что если эта ошибка будет устранена, то файл .yml будет создан с надеждой. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 15 июня 2019

Какой путь вы вводите в функцию?

Вы можете найти пути с помощью glob, это очень просто

recursive = True с '**' ищет все папки в текущей и возвращает список путей с именем файла

import os
from glob import glob

files = glob('**\\*.txt', recursive=True)  # '**' is used to search in any folder, 
# '*' is wild card, use it to fit with file formats

for path in files:
    print(path)  # this is relative path
    print(os.path.abspath(path))  # this will convert relative path to absolute

Если вы хотите просто имя файла, вместо этого: ID = int(os.path.split(imagePath)[-1].split('.')[1])

Вы должны просто использовать os.path.basename(path)

name = (os.path.basename(path).split('.')[0])
file_format = (os.path.basename(path).split('.')[1])
0 голосов
/ 15 июня 2019

Я думаю, что ваш путь абсолютный, а не относительный (см. this для получения дополнительной информации).тогда я предполагаю, что imagePath - это /home/user/docs/1.png, поэтому давайте посмотрим, что у нас есть:

>>> os.path.split(imagePath)[-1].split('.')
['1', 'png']
>>> os.path.split(imagePath)[-1].split('.')[1]
'png'
>>> ID = int(os.path.split(imagePath)[-1].split('.')[1])
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'png'

, поэтому, возможно, ваше имя файла 'somenumber.x'?попробуйте изменить [1] на [0]:

ID = int(os.path.split(imagePath)[-1].split('.')[0])
...