将灰度图像转换回矢量

convert greyscale image back to vector

我有一个名为 w 的列表(大小:784),我将其输出为 png 灰度图像:

import matplotlib.pyplot as plt    
tmp = 1/(1+np.exp(-10*w/w.max()))
plt.imshow(tmp.reshape(28,28),cmap="gray")
plt.draw()
plt.savefig("final_weight_vector")

现在我想将 png 图像 back 读取为矢量。

目前我找到的解决方案:

第一个:

import matplotlib.image as mpimg
img=mpimg.imread('final_weight_vector.png')

img 似乎不是灰度,因为它的尺寸结果是 (600, 800, 4)。

第二个:

以 RGB 格式读取文件并转换为灰度:

im = Image.open('final_weight_vector.png').convert('LA')

但是,我找不到如何遍历 im,所以我不知道里面有什么。此外,我不确定 im 的输出值是否与原始 w.

的值完全相同

请帮忙?

问题是您保存的可能是 28x28 图像的绘图,而不是图像本身。

为了确定,请预览图像。我敢打赌它是 600x800,而不是 28x28。我还认为它包含许多其他元素,例如轴和填充。

如果您想以可加载的格式存储您的数组,您可以使用 numpy.save()(和 numpy.load() 来加载它)。

您也可以使用 PIL 将数组保存为图像(例如,使用类似于:http://code.activestate.com/recipes/577591-conversion-of-pil-image-and-numpy-array/