Python 将多个2D numpy数组保存为灰度图像

Python 将多个2D numpy数组保存为灰度图像,python,Python,从大小为[365365,20]的numpy数组a开始,我希望将每个切片a[:,:,I]保存为“.bmp”灰度图像。矩阵A由int值介于0和32之间的元素组成。重要的是,图像之间的灰度值不得变化。因此,numpy数组中的每个int值都应该在所有图像中显示为一个特定的灰度值 我尝试使用imageio查看下面的代码,但是,我发现相同int值的图像之间的灰度值不同。因此,在一幅浅灰色图像和另一幅深灰色图像中,int值为15 因此,是否可以使用imagio自己设置灰度值,或者是否有其他方法确保灰度值与切片

从大小为[365365,20]的numpy数组a开始,我希望将每个切片a[:,:,I]保存为“.bmp”灰度图像。矩阵A由int值介于0和32之间的元素组成。重要的是,图像之间的灰度值不得变化。因此,numpy数组中的每个int值都应该在所有图像中显示为一个特定的灰度值

我尝试使用imageio查看下面的代码,但是,我发现相同int值的图像之间的灰度值不同。因此,在一幅浅灰色图像和另一幅深灰色图像中,int值为15

因此,是否可以使用imagio自己设置灰度值,或者是否有其他方法确保灰度值与切片中的int值相对应

number_of_slices = A.shape[2] 
for count range(number_of_slices):
    Slice = A[:,:,count]
    Name = "Slices%s"%(count)+".bmp" 
    imageio.imwrite(Name,Slice)
这应该起作用:

import numpy as np

minimum = data.min()
maximum = data.max()

rescaled = A * 255 / (maximum - minimum)

result = [image for image in np.rollaxis(rescaled, 2)]

您希望每个输出是什么形状?365、365、3?您的图像将根据您指定的numpy阵列的最大强度沿灰度缩放,因此,如果一个切片仅上升到15,它将把15视为黑色,另一个上升到32的帧将把32视为黑色。我真的不知道imageio,但它应该有一个格式try imageio.help,它将采用指定的最大值。否则,您可以添加一个参考像素,或全部为32边框,以便每个帧具有相同的最大值。我的输出应该是365形状的图像,365@user11346222你是说20张图片,每一张都是365号,365号,对吗?最后,通过在每个切片中添加完整365365,20矩阵的最小值和最大值,我获得了想要的结果