Я не могу построить несколько изображений в градациях серого - PullRequest
0 голосов
/ 30 мая 2018

У меня есть тренировочный набор с 31367 примерами, это данные RGB-изображений, я хочу преобразовать их из RGB в оттенки серого и нанести их на блокнот jupyter.

# Convert from RBG to grayscale
X_train_gray = np.expand_dims(np.asarray([cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) for img in X_train]), 3)
X_train_gray = np.reshape(X_train_gray, (len(X_train_gray), 32, 32))
X_train_gray = np.asarray(X_train_gray)/255

Для построения изображения 3 я делаю это:

figg, axx = plt.subplots(1,3)
axx[1,1].imshow(X_train_gray[13])
axx[1,2].imshow(X_train_gray[14])
axx[1,3].imshow(X_train_gray[15])

Я получил эту ОШИБКУ:

IndexError Traceback (последний последний вызов) в ()

---> 17 axx[1,1].imshow(X_train_gray[14])

IndexError: слишком много индексов для массива

Примечание: если я использую plt.imshow (X_train_gray [14]), ошибки не возникает, и она отображает серое изображение.

1 Ответ

0 голосов
/ 30 мая 2018

Проблема с индексацией осей.Индексация начинается с 0. Более того, при выполнении:

f, ax = plt.subplots(1,3)

топор будет выглядеть так:

array([<matplotlib.axes._subplots.AxesSubplot object at 0x0000024A6F452320>,
   <matplotlib.axes._subplots.AxesSubplot object at 0x0000024A6F4A3358>,
   <matplotlib.axes._subplots.AxesSubplot object at 0x0000024A6F4C99E8>],
  dtype=object)

Таким образом, вам нужно использовать только 1 индекс, а не 2.

Решение:

figg, axx = plt.subplots(1,3)
axx[0].imshow(X_train_gray[13])
axx[1].imshow(X_train_gray[14])
axx[2].imshow(X_train_gray[15])
...