Python 将numpy数组保存为图像时出现的问题
我无法将numpy二维数组保存为图像(灰度)。我读了这个问题,但仍然不明白下面的代码出了什么问题Python 将numpy数组保存为图像时出现的问题,python,matplotlib,plot,Python,Matplotlib,Plot,我无法将numpy二维数组保存为图像(灰度)。我读了这个问题,但仍然不明白下面的代码出了什么问题 plt.imsave("image.eps", np.flipud(arr), cmap = "gray_r", format = "eps", dpi = 1000) 执行后image.eps是空白的,我不明白为什么。我还尝试将其作为AxeImage对象处理(见下文),但没有成功 img = plt.imshow(np.flipud(arr)) plt.savefig("image.eps",
plt.imsave("image.eps", np.flipud(arr), cmap = "gray_r", format = "eps", dpi = 1000)
执行后image.eps是空白的,我不明白为什么。我还尝试将其作为AxeImage对象处理(见下文),但没有成功
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变量保存图片?我已经在解释器中测试了
imsave
In [39]: import numpy as np
...: import matplotlib.pyplot as plt
In [40]: a = np.random.random((500,500))
In [41]: plt.imsave('a1000.eps', a, dpi=1000)
In [42]: plt.imsave('a0500.eps', a, dpi=500)
In [43]:
Do you really want to exit ([y]/n)?
22:07 boffi@debian:~ $ ll a1000.eps a0500.eps
-rw-r--r-- 1 boffi boffi 1512480 Nov 22 22:07 a0500.eps
-rw-r--r-- 1 boffi boffi 1512480 Nov 22 22:07 a1000.eps
如您所见,这两个文件的大小相同,是相同还是不同
22:08 boffi@debian:~ $ diff a1000.eps a0500.eps
2c2
< %%Title: a1000.eps
---
> %%Title: a0500.eps
4c4
< %%CreationDate: Fri Nov 22 22:07:30 2019
---
> %%CreationDate: Fri Nov 22 22:07:42 2019
6c6
< %%BoundingBox: 288.0 378.0 324.0 414.0
---
> %%BoundingBox: 270.0 360.0 342.0 432.0
31,32c31,32
< 288 378 translate
< 36 36 0 0 clipbox
---
> 270 360 translate
> 72 72 0 0 clipbox
37c37
< 36.0 36.0 scale
---
> 72.0 72.0 scale
最后,我们有一个问题,您的图像是空白的。我的不是。请注意,较大的图像是具有较小的dpi
的图像,这与您认为增加dpi
可以获得较大的图像相反
您可以包括您正在使用的阵列吗?或者至少是它的一个子集?使用
arr=np.arange(10000).重塑(100100)
,您的imsave
语法有效(尽管图像只有1英寸宽)。所以你需要更具体一点,我想一个主要的问题是eps和其他矢量格式一样,并没有定义dpi。如果72的标准“dpi”与设置的dpi(这里是1000)完全不同,这可能会有一些奇怪的含义。是的,事实上,没有设置dpi的代码是有效的。但是,相应的图片太小(即使对于我使用的矩阵500乘以500)。有可能把图片放大吗?
dpi : int
The DPI to store in the metadata of the file. This does not affect the
resolution of the output image.