gpt4 book ai didi

python - 使用PIL将灰度图像转换为(1, H, W) numpy数组

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:43 24 4
gpt4 key购买 nike

使用 PIL 将 RGB 图像转换为 (H, W, 3) numpy 数组非常快。

im = np.array(PIL.open(path))

但是,我找不到一种快速方法将灰度图像转换为 (H, W, 1) 数组。我尝试了两种方法,但它们都比上面慢得多:

im = np.array(PIL.open(path)) # return an (H, W) array
im = np.expand_dims(im, axis=0)
im = im.astype(int)

这种方法也很慢:

img = PIL.open(path)
im = np.array(img.getdata()).reshape(img.size[1], img.size[0], 1)

请多多指教...

最佳答案

您可以使用np.asarray()获取数组 View ,然后使用None/np.newaxis附加一个新轴然后使用类型转换,将 copy 设置为 False(如果您从相同的数据类型进行转换以节省内存)-

im = np.asarray(PIL.open(path))
im_out = im[None].astype(dtype=int, copy=False)

这会在开头附加新轴,从而产生 (1,H,W) 作为输出数组形状。为此,为了最终获得 (H,W,1) 的数组形状,请执行以下操作: im[...,None] 而不是 我[无]

<小时/>

更简单的方法是 -

im_out = np.asarray(img, dtype=int)[None]

如果输入已经是 uint8 dtype,并且我们想要相同 dtype 的输出数组,请使用 dtype=np.uint8 ,这应该相当快。

关于python - 使用PIL将灰度图像转换为(1, H, W) numpy数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47588234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com