【问题标题】:MNIST saving images from CSV using matplotlibMNIST 使用 matplotlib 从 CSV 保存图像
【发布时间】:2018-02-26 01:26:36
【问题描述】:

在 MNIST 数据集中,我有 CSV 格式的图像,784 列中的每一列对应一个像素强度。我想保存这些图像中的每一个而不用imshow查看它们。

import numpy as np
import csv
import matplotlib.pyplot as plt
i=0
with open('Book1.csv', 'r') as csv_file:
for data in csv.reader(csv_file):

    # The rest of columns are pixels
    pixels = data[:]

    # This array will be of 1D with length 784
    # The pixel intensity values are integers from 0 to 255
    pixels = np.array(pixels, dtype='uint8')

    # Reshape the array into 28 x 28 array (2-dimensional array)
    pixels = pixels.reshape((28, 28))
    i +=1
    # Plot
    plt.title('Label is {label}'.format(label=label))
    plt.imshow(pixels, cmap='gray')
    plt.savefig(str(i))'

这样我无法保存每张图片。

【问题讨论】:

  • 你能说得更具体点吗?运行脚本时究竟会发生什么?最后一行末尾的撇号是故意的吗?

标签: python csv matplotlib mnist


【解决方案1】:

文件名应该以你想要的扩展名结尾,

plt.savefig(str(i)+".png")

或者你需要指定format:

plt.savefig(str(i), format="png")

您可能会遇到的另一个问题是,一段时间后您的绘图速度会变慢,因为所有图像都放在彼此的顶部。为了避免这种情况,您可以在循环结束时调用plt.close()

【讨论】:

  • 感谢您指出我必须使用的“plt.close()”。实际上,代码运行良好。我在没有循环的情况下手动保存了一百张图像,其名称与循环给出的名称相同。由于保存图像花了很长时间,我以为程序没有运行。
  • 抱歉,OP 说“我想保存这些图像中的每一个,而不用 imshow 查看它们”。如果不先显示图像,解决方案是否有效?
  • @StatsSorceress 是的,函数imshow 创建图像。只要你不打电话plt.show(),图就不显示了。 (只要您不使用 jupyter,那将是一个不同的问题)
  • @ImportanceOfBeingErnest 你能解释一下如果使用 Jupyte 会有什么变化吗?
  • @MatthewArthur 在 Jupyter 中也是一样的。
猜你喜欢
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
相关资源
最近更新 更多