【问题标题】:I can't plot multi grayscale images我无法绘制多灰度图像
【发布时间】:2023-03-16 11:55:01
【问题描述】:

我有一个包含 31367 个示例的训练集,这些数据是 RGB 图像,我想将它们从 RGB 转换为灰度并在 jupyter notebook 中绘制。

# 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]) 没有错误,它会绘制灰度图像。

【问题讨论】:

    标签: python numpy matplotlib subplot


    【解决方案1】:

    问题在于轴的索引。索引从 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])
    

    【讨论】:

      【解决方案2】:

      在子图之前添加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])
      

      它对我有用。

      【讨论】:

        猜你喜欢
        • 2020-04-23
        • 1970-01-01
        • 2012-05-26
        • 1970-01-01
        • 2014-07-28
        • 1970-01-01
        • 2014-12-11
        • 2012-11-06
        • 1970-01-01
        相关资源
        最近更新 更多