如何使用matplotlib / numpy将数组另存为灰度图像?

马修·帕里斯(Mathieu Paurisse)

我正在尝试将尺寸为128x128像素的Numpy数组保存到灰度图像中。我只是认为pyplot.imsave函数可以完成这项工作,但事实并非如此,它以某种方式将我的数组转换为RGB图像。我尝试在转换过程中将颜色图强制设置为“灰度”,但是即使保存的图像以灰度显示,其尺寸仍为128x128x4。这是我编写的显示此行为的代码示例:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mplimg
from matplotlib import cm

x_tot = 10e-3
nx = 128

x = np.arange(-x_tot/2, x_tot/2, x_tot/nx)

[X, Y] = np.meshgrid(x,x)
R = np.sqrt(X**2 + Y**2)

diam = 5e-3
I = np.exp(-2*(2*R/diam)**4)

plt.figure()
plt.imshow(I, extent = [-x_tot/2, x_tot/2, -x_tot/2, x_tot/2])

print I.shape

plt.imsave('image.png', I)
I2 = plt.imread('image.png')
print I2.shape

mplimg.imsave('image2.png',np.uint8(I), cmap = cm.gray)
testImg = plt.imread('image2.png')
print testImg.shape

在这两种情况下,“打印”功能的结果均为(128,128,4)。

谁能解释为什么即使我的输入数组是亮度类型,imsave函数仍会创建这些尺寸?当然,有人可以将阵列保存为标准灰度格式吗?

谢谢!

艾肯伯格

PIL它应该像这样工作

import Image

I8 = (((I - I.min()) / (I.max() - I.min())) * 255.9).astype(np.uint8)

img = Image.fromarray(I8)
img.save("file.png")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将Matplotlib图形另存为TIFF

如何将div的内容另存为图像?

使用np.savetxt将数组另存为列

如何在python中将列表另存为numpy数组?

将Numpy数组另存为图像

如何将窗口内容另存为图像

如何在不先将文件另存为png或jpeg的情况下将numpy数组传递给openCV?

我可以使用“ normal”(有思想的)python将numpy数组另存为16位图像吗?

如何将3通道numpy数组另存为图像

如何给浏览器“将图像另存为”按钮

如何将3D Python / NumPy数组另存为文本文件?

使用Swift将图像另存为Firebase作为图像/ JPEG

如何将numpy数组另存为Tensorflow变量

如何使用html / javascript内联下载图像而不是将图像另存为

如何将图像另存为变量?

如何将图像另存为位图图像文件?

如何将python字典列表另存为matlab结构化数组的数组?

如何将张量图像另存为PNG?

使用rasterio将数组另存为Geotiff

如何将非常大的numpy数组另存为图像,并尽可能少地将其加载到内存中

使用自定义颜色将numpy数组另存为单通道png

如何使用自定义编解码器将numpy数组另存为字节?

如何将图像PDF文件另存为图像?

将Matplotlib图形另存为数据库中的图像字段

如何使用特定的十六进制代码和尺寸将颜色另存为PNG图像?

如何将图像另存为32位BMP?

Matplotlib将单个“ ims”(动画部分)另存为图像

如何使用AVFoundation将预览(缩放)图像另存为照片?

Excel 2010 如何将图形另存为图像?