matplotlib:如何以全分辨率保存图像?

dldeef67  于 2021-09-08  发布在  Java
关注(0)|答案(3)|浏览(298)

我已经创建了一个莫扎克图像,这样一个大图片由许多小图片组成。我可以在matplotlib查看器中很好地查看此图像,并且可以放大以查看所有微小的图片。但是,当我保存图像时,无论图像的扩展程度如何,图像都会失去缩放能力,以至于在放大时,微小的图像会变得模糊。有没有办法以全分辨率保存图像?我有一个numpy阵列中的rgb图像,因此如果有其他更合适的库,也可以使用。

bfnvny8b

bfnvny8b1#

这应该起作用:

from PIL import Image

Image.fromarray(numpy_img).save("img_path.png")
ars1skjm

ars1skjm2#

我认为你被windows的照片应用程序误导了,如果你放大太多,它会自动应用模糊。
matplotlib正在使用所有像素值正确保存图像,您可以通过再次缩放加载图像的像素进行检查。

import numpy as np

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

# save image

array = np.random.random((4000, 4000, 3))
plt.imsave("save.png", array)

# load image

img = mpimg.imread("save.png")
plt.imshow(img)
plt.show()
tyky79it

tyky79it3#

另一个选择是我编写的名为 numpngw . 如果numpy数组是, img (8位或16位无符号整数的数组,形状为(m,n,3)),可以使用:

from numpngw import write_png

write_png('output.png', img)

(如果数组是浮点,则必须将值转换为无符号整数。png文件格式不存储浮点值。)

相关问题