Невозможно выровнять или изменить набор данных изображений - PullRequest
0 голосов
/ 13 марта 2020

У меня есть набор данных из 5966 изображений, разделенных на 4 категории.

Я загружаю их, начиная с их путей:

paths = list() 
paths.append(glob.glob("C:\\immagini\\belts*.jpg")) 
paths.append(glob.glob("C:\\immagini\\casual-shoes*.jpg"))
#paths.append(glob.glob("C:\\immagini\\sports-shoes*.jpg")) #Not load for now
paths.append(glob.glob("C:\\immagini\\wallets*.jpg"))

ds = np.asarray([cv2.imread(file, cv2.IMREAD_GRAYSCALE) for category in paths for file in category])

Таким образом, я получаю {ndarray } [[[... с формой (4134,80,60). На данный момент мне нужны изображения в качестве матрицы для предварительной обработки:

edges = np.asarray([cv2.Canny(image, 100, 200) for image in ds])

Затем каждое изображение становится примером для моего ученика, поэтому мне нужно выровнять матрицу. Я делаю это, используя:

X = np.reshape(edges, (len(edges), len(edges[0])*len(edges[0][0])))

Это работает отлично, но если я загружаю набор данных alla, не комментируя строку выше, размер всего набора данных равен 5966, и он загружается как {ndarray} [array ([[ ... с формой (5966). Итак, когда я пытаюсь изменить форму, я получаю:

ValueError: cannot reshape array of size 5966 into shape (5966,4800)

Почему Python не может создавать массивы длиннее, чем около 5000 элементов? Как я могу сгладить матрицы? ds = [[[...]]] -> [[...]] Мне нужен массив со всеми изображениями, где каждое изображение является списком пикселей, а не больше матрицы. Только внутренние матрицы должны быть flatten

Я получаю информацию о типе жирным шрифтом, используя Python Console в Pycharm.

UPDATE: Я решил проблему. В наборе данных есть изображение 60x60, в то время как все остальные изображения имеют размер 60x80. Это привело к созданию массива объекта python. В массиве uint8 каждый элемент должен иметь одинаковую форму, а для вставки изображения 60x60 python создает объект. Поэтому я изменил размер выброса, и проблема не не происходит.

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