【发布时间】:2019-11-21 20:54:53
【问题描述】:
我无法将 numpy 二维数组保存为图像(灰度)。我读了这个问题Save plot to image file instead of displaying it using Matplotlib,但仍然不明白下面的代码有什么问题。
plt.imsave("image.eps", np.flipud(arr), cmap = "gray_r", format = "eps", dpi = 1000)
执行后 image.eps 是空白的,我不明白为什么。我也尝试将其作为 AxesImage 对象处理(见下文),但没有成功。
img = plt.imshow(np.flipud(arr))
plt.savefig("image.eps", format = "eps", dpi = 1000)
请解释一下这段代码有什么问题。
其实我是 Python 新手(对 matplotlib 也是如此),所以我对 Python 的很多想法并不熟悉。
更新: 我尝试了以下代码,但 image.eps 仍然是空白的。
import matplotlib.pyplot as plt
import numpy as np
arr = np.array([[1, 0.5],[0.5, 0]])
plt.imsave("image.eps", np.flipud(arr), cmap = "gray_r", format = "eps", dpi = 1000)
另一方面,如果我打电话
img = plt.imshow(arr)
然后我可以在控制台 (Spyder) 中看到正确的图片(一个黑色、一个白色和两个灰色方块)。
也许有一些方法可以使用 img 变量保存图片?
【问题讨论】:
-
你能包含你正在使用的数组吗?或者至少是其中的一个子集?
-
使用
arr = np.arange(10000).reshape(100,100),您的imsave语法有效(尽管图像只有1 英寸宽)。所以你需要更具体。 -
我怀疑一个主要问题是 eps 与其他矢量格式一样,并没有真正定义 dpi。如果 72 的规范“dpi”与设置的 dpi(此处为 1000)完全不同,这可能会产生一些奇怪的含义。
-
是的,确实,没有设置 dpi 的代码可以工作。但是,对应的图片太小了(即使是我使用的 500×500 的矩阵)。可以把图片放大吗?
标签: python matplotlib plot