我有3个400x600的数组,它们代表我要制作的图像的3种颜色。
我在这里找到了一种可能的方式:http : //docs.scipy.org/doc/scipy-0.13.0/reference/generation/scipy.misc.imsave.html,但是他们希望我将浮点数转换为uint8。现在,如果我通过'image.dtype = np.uint8'更改dtype,则以某种方式将尺寸更改为400x600x24(而当我不更改类型时,尺寸为400x600x3)
我该如何改变?(也欢迎其他方法)
image.dtype = np.uint8
只是强制将字节从强制转换float64
为uint8
。由于每个float64
字节占用8个字节,而每个uint8
字节只有1个字节,因此您获得的值是原来的8倍。
要转换值,而不是重新解释字节,您需要使用以下astype
方法:
image = image.astype(np.uint8)
但是,由于两个原因,这可能不会很有用。首先,最大的浮动值可能都在0.0-1.0的范围内。第二,astype
截断而不是舍入。因此,转换为整数只会使几乎所有整数变为0,其余整数变为1,而不是从0到255的范围平滑变化。
因此,您可能想要的是:
image = (image * 255).round().astype(np.uint8)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句