我无法绘制多灰度图像

时间:2018-05-30 13:11:32

标签: python numpy matplotlib subplot

我有一个训练集,有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(最近一次调用最后一次)  in()

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

IndexError:数组索引太多

  

注意:如果我使用plt.imshow(X_train_gray [14]),则没有错误,并且它会绘制灰色图像。

2 个答案:

答案 0 :(得分:0)

问题在于轴的索引。索引从0开始。 而且,在做的时候:

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

ax看起来像:

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])

答案 1 :(得分:0)

在子图之前添加 plt.gray() 方法:

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

它对我有用。