python从3个float32 numpy数组中生成RGB图像

Coo*_*rab 6 python arrays rgb image scipy

我有3个阵列,400x600,代表我想要制作的图像的3种颜色.

我在这里找到了一个潜在的方法:http://docs.scipy.org/doc/scipy-0.13.0/reference/generated/scipy.misc.imsave.html但他们希望我将浮动转换为uint8.现在,如果我通过'image.dtype = np.uint8'更改dtype,那么以某种方式将维度更改为400x600x24(而当我不更改类型时,它是400x600x3)

我该如何改变?(其他方法也欢迎)

aba*_*ert 15

image.dtype = np.uint8只是强行将字节转换float64uint8.由于每个float64字节需要8个字节,而每个uint8字节只有1个字节,因此您得到的值是8倍.

要转换值,而不是重新解释字节,您需要以下astype方法:

image = image.astype(np.uint8)
Run Code Online (Sandbox Code Playgroud)

但是,由于两个原因,这可能不会非常有用.首先,大的,你的浮动值可能都在0.0-1.0范围内.第二,astype截断,而不是舍入.因此,转换为整数时只会让几乎所有的人0,其余的1,而不是平稳,从0-255.

那么,你可能想要的是:

image = (image * 255).round().astype(np.uint8)
Run Code Online (Sandbox Code Playgroud)