2017-05-07 106 views
2

我正在读取成千上万的图像(全部三个通道),以numpy ndarray的形式一个接一个地追加到列表中。最后我想这个列表转换成numpy的数组:未能将ndarrays列表转换为numpy数组

{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) 

了这里一切都正常:

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 

从我看起来像一本字典读取每个图像路径。我有一个大小为(227,227,3)的ndarray图像矩阵列表。但是,当我尝试转换的“图像”,以numpy的阵列和从函数返回,它提供了以下错误:

return np.array(images) 

回报np.array(图片)

ValueError异常:无法播放输入数组从形状(227,227,3)变成形状(227,227)

我将不胜感激任何人的想法。

回答

0

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

下面的代码应该告诉你哪个图像是罪犯。

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

是的!!!我甚至没有想到... 非常感谢。 –