我已经创建了一个莫扎克图像,这样一个大图片由许多小图片组成。我可以在matplotlib查看器中很好地查看此图像,并且可以放大以查看所有微小的图片。但是,当我保存图像时,无论图像的扩展程度如何,图像都会失去缩放能力,以至于在放大时,微小的图像会变得模糊。有没有办法以全分辨率保存图像?我有一个numpy阵列中的rgb图像,因此如果有其他更合适的库,也可以使用。
bfnvny8b1#
这应该起作用:
from PIL import Image Image.fromarray(numpy_img).save("img_path.png")
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()
tyky79it3#
另一个选择是我编写的名为 numpngw . 如果numpy数组是, img (8位或16位无符号整数的数组,形状为(m,n,3)),可以使用:
numpngw
img
from numpngw import write_png write_png('output.png', img)
(如果数组是浮点,则必须将值转换为无符号整数。png文件格式不存储浮点值。)
3条答案
按热度按时间bfnvny8b1#
这应该起作用:
ars1skjm2#
我认为你被windows的照片应用程序误导了,如果你放大太多,它会自动应用模糊。
matplotlib正在使用所有像素值正确保存图像,您可以通过再次缩放加载图像的像素进行检查。
tyky79it3#
另一个选择是我编写的名为
numpngw
. 如果numpy数组是,img
(8位或16位无符号整数的数组,形状为(m,n,3)),可以使用:(如果数组是浮点,则必须将值转换为无符号整数。png文件格式不存储浮点值。)