Python PIL(Pillow):有效地将图像列表转换为np.array?

时间:2018-06-13 13:44:15

标签: python numpy python-imaging-library

我想有效地将​​图像列表转换为np.array。

我必须处理一些用PIL.Image.open(img_path)读取的jpg图像,我必须处理每个图像,之后我想将它们全部放入列表中,然后将其完全转换为np.array我想要的形状(N,H,W,C),分别表示number of imgheightwidthchannel

我的尝试:

all_img = []

for filename in all_filename_of_img[:100]:
    // process each img

    // then append each into the list
    all_img.append(img)

all_np_img = np.arrray(all_img, dtype=np.array)

有错误:

Traceback (most recent call last):
  File ".../playground.py", line 39, in <module>
    all_np_img = np.array(all_img, dtype=np.array)
TypeError: data type not understood

如果我首先按img = np.asarray(img)转换for循环中的每个img然后执行all_img.append(img),这是正确的方法吗?

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用名为stack的numpy函数:

all_np_img = np.stack(all_img)

答案 1 :(得分:0)

使用np.vstack

pics = list()
for filename in all_filename_of_img[:100]:
    img = Image.open(filename)
    pics.append(img)

np.vstack(pics)