无法将ndarray列表转换为numpy数组

时间:2017-05-07 08:25:54

标签: python numpy

我正在以numpy ndarray的形式逐个阅读数千张图片(全部三个频道)并将它们附加到列表中。最后,我想将此列表转换为numpy数组:

import numpy as np
from PIL import Image

def read_image_path(path, img_size=227):
    img = Image.open(path)
    img = np.array(img.resize([img_size, img_size]))
    return img

我从字典中读取每个图像路径,如下所示:

{1:{'img_path': 'path-to-image', 'someOtherKeys':'...'}, 2:{...}}

images = []
for key in key:
    img = read_image_path(dataset_dictionary[key]['img_path'])
    images.append(img)

到这里一切都很好。我有一个大小为(227,227,3)的ndarray图像矩阵列表。但是当我尝试将“images”转换为numpy数组并从函数返回时,它会出现以下错误:

return np.array(images)

返回np.array(图片)

ValueError:无法将形状(227,227,3)的输入数组广播为形状(227,227)

我将很感激有人对此有所了解。

1 个答案:

答案 0 :(得分:0)

最有可能你有一个形状为(227,227)而不是(227,227,3)的img(或图像)。

以下代码应告诉您哪个图像是罪犯。

for key in key:
    img = read_image_path(dataset_dictionary[key]['img_path'])
    if img.shape != (227,227,3):
            print(key)