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

时间:2019-04-11 13:35:56

标签: python

从大小为[365,365,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)

1 个答案:

答案 0 :(得分:1)

这应该有效:

import numpy as np

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

rescaled = A * 255 / (maximum - minimum)

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