spflmm 发表于 2023-5-6 22:28:51

matplotlib方面

def plot_image(img, label, name):

    fig = plt.figure()
    for i in range(6):
      plt.subplot(2, 3, i + 1)
      plt.tight_layout()
      plt.imshow(img*0.3081+0.1307, cmap='gray', interpolation='none')
      plt.title("{}: {}".format(name, label.item()))
      plt.xticks([])
      plt.yticks([])
    plt.show()

两个问题请大神解惑,
1.大神能不能详细解释一下plt.subplot(2, 3, i + 1)
2.plt.imshow(img*0.3081+0.1307, cmap='gray', interpolation='none'),imshow的参数一般是:
(M, N):标量数据的图像,灰度图
(M, N, 3):RGB图像
(M, N, 4):RGBA图像,
为什么这段代码里面的参数可以是img*0.3081+0.1307?另外能不能解释一下img*0.3081+0.1307?
谢谢!

isdkz 发表于 2023-5-6 22:31:40

这是一个将图像进行可视化的函数。首先,我来解释您提到的两个问题。

1.plt.subplot(2, 3, i + 1) :这个函数用于在一个图形窗口中创建子图。参数的含义如下:
   * 第一个参数(2)表示子图的行数。
   * 第二个参数(3)表示子图的列数。
   * 第三个参数(i + 1)表示当前子图的索引。
   
   在这个例子中,我们创建了一个2行3列的子图网格,共有6个子图。在循环中,我们依次在每个子图上绘制图像。

2.plt.imshow(img]*0.3081+0.1307, cmap='gray', interpolation='none') : imshow 函数用于在子图上显示图像。参数的含义如下:
   *img[i]*0.3081+0.1307 :这是要显示的图像。 img[i] 是一个二维数组,表示灰度图像。乘以0.3081然后加上0.1307可能是对图像进行归一化的逆操作。原来的归一化操作可能是: (img - 0.1307) / 0.3081 。这样的操作通常用于将图像的像素值缩放到一个较小的范围(例如0到1之间),便于神经网络处理。在显示图像时,我们需要进行逆操作,恢复原始像素值。
   *cmap='gray' :这个参数指定了显示图像时使用的颜色映射。在这个例子中,我们使用灰度颜色映射来显示灰度图像。
   *interpolation='none' :这个参数用于控制图像缩放时的插值方法。设置为'none'表示不使用插值,直接显示原始像素。

希望这些解释能帮助您理解这段代码。如果您还有其他问题,请随时提问。
页: [1]
查看完整版本: matplotlib方面