我正在以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)
我将很感激有人对此有所了解。
答案 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)