Numpy Vstack с изображениями - PullRequest
       13

Numpy Vstack с изображениями

1 голос
/ 03 апреля 2019

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

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

Я не уверен, почему эта проблема возникает и как ее исправить.

from PIL import Image
import numpy as np
import os

X = np.array([])
y = []

categories = {
    'A': 1,
    'B': 2
}

root = data_dir + '/cropped_resized(128,128)/'

for path, subdirs, files in os.walk(root):
    for name in files:
        img_path = os.path.join(path,name)
        category = categories[os.path.basename(path)]
        im = Image.open(img_path)
        img_pixels = list(im.getdata())
        width, height = im.size
        X = np.vstack((X, img_pixels))
        #X = np.concatenate((X, img_pixels), axis=0)
        y.append(category)

X_train, X_test, y_train, y_test = train_test_split(X, y)

Вот пример картинки, которая терпит неудачу

enter image description here

1 Ответ

1 голос
/ 03 апреля 2019

Решите, хотите ли вы, чтобы ваши изображения были в RGB или оттенках серого, и убедитесь, что они загружены.

В частности, измените эту строку:

im = Image.open(img_path)

до

im = Image.open(img_path).convert('RGB')

или

im = Image.open(img_path).convert('L')
...