我正在尝试将图像读入文件夹并将其存储在数组中,但是出现索引错误

时间:2019-10-28 21:23:19

标签: python arrays python-3.x opencv

我不能将图像的像素数据保存到列表中吗?

GmdMiss_Folder = os.path.join(os.getcwd(), '..', 'Photo', 'GMD Miss')
GmdMiss_List = os.listdir(GmdMiss_Folder)
for i in range(0, len(GmdMiss_List)):
    Img_Miss_List[i] = np.array(cv2.imread(os.path.join(os.getcwd(), GmdMiss_Folder, GmdMiss_List[i]), cv2.IMREAD_GRAYSCALE))

IndexError:列表分配索引超出范围

2 个答案:

答案 0 :(得分:0)

您可以在python列表中存储任意对象,因此这不是问题。您确定Img_Miss_List已被初始化为多个空白列表吗?如果要使用索引分配,则要设置元素i-1,列表的长度必须至少为i。可以将列表初始化为相同的长度:Img_Miss_list = [None] * len(GmdMiss_List),或者只是将元素附加到空列表中:

Img_Miss_List = []
for file in GmdMiss_list:
   Img_Miss_List.append(
       np.array(cv2.imread(os.path.join(
           os.getcwd(), GmdMiss_Folder, file), cv2.IMREAD_GRAYSCALE))

答案 1 :(得分:0)

我认为问题出在Img_Miss_List。没有内容,我假设您创建了一个空列表,如下所示:

Img_Miss_List = []

因此您只能追加一个空列表,而不能使用索引。

如何尝试:

Img_Miss_List = []
for i in range(0, len(GmdMiss_List)):
    Img_Miss_List.append(np.array(cv2.imread(os.path.join(os.getcwd(), GmdMiss_Folder, GmdMiss_List[i]), cv2.IMREAD_GRAYSCALE)))

希望有帮助。