Аргумент int () должен быть строкой, байтовоподобным объектом или числом, а не NoneType. Как решить эту проблему? - PullRequest
0 голосов
/ 18 марта 2020

Для этого кода

import cv2
import numpy as np
from os import listdir
from os.path import isfile, join

data_path = 'dataset/'
onlyfiles = [f for f in listdir(data_path) if isfile(join(data_path,f))]

Training_Data, Labels = [], []

for i, files in enumerate(onlyfiles):
    image_path = data_path + onlyfiles[i]
    images = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
    Training_Data.append(np.asarray(images, dtype=np.uint8))
    Labels.append(i)

Labels = np.asarray(Labels, dtype=np.int32)

model = cv2.face.LBPHFaceRecognizer_create()

model.train(np.asarray(Training_Data), np.asarray(Labels))

print("Model Training Completed!!!!!")

Я получаю эту ошибку

/usr/local/bin/python3.7 "/Users/mac/Google Drive/Read&Write2Database/knowledgeShelfPart-2.py"
Traceback (most recent call last):
  File "/Users/mac/Google Drive/Read&Write2Database/knowledgeShelfPart-2.py", line 14, in <module>
    Training_Data.append(np.asarray(images, dtype=np.uint8))
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/numpy/core/numeric.py", line 492, in asarray
    return array(a, dtype, copy=False, order=order)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Не удается оставить комментарий. Без копии данных невозможно узнать root о проблеме. Однако я бы проверил, что images - это не None. Кажется, что проблема связана с тем, что imread не возвращает то, что вы хотите, что может означать, что вы не генерируете пути к файлам, которые, как вы думаете, вы есть.

0 голосов
/ 18 марта 2020

Вы можете преобразовать весь список в целое число. Чтобы обойти это, вы должны сначала преобразовать свой список в строку, а затем преобразовать эту строку в целое число. Поскольку в вашем списке несколько элементов, python не знает, какой элемент в списке вы хотите передать или преобразовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...