You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理车辆图像数据集时报list index out of range错误如何解决

Python车辆图像数据集处理IndexError报错排查

报错根本原因

你触发IndexError: list index out of range的核心是代码执行到mpimg.imread(cars[1])时,cars列表的长度小于2,没有索引为1的元素;如果这行执行通过后notcars[5]也报错,说明notcars列表长度小于6,没有索引为5的元素。

常见触发原因

  • glob路径读取配置错误,没有成功读到/OwnCollection下的图像文件,导致images列表为空,后续所有衍生列表都是空值
    注意glob.glob默认不会递归读取子文件夹内容,你如果没有加recursive=True参数、没有写对通配符规则、没有匹配到对应后缀的图像文件,都会读不到目标数据
  • 路径判断逻辑失效,比如实际文件夹名大小写和你写的non-vehicles不一致、返回的路径不含目标关键词,导致全量样本列表all_cars/all_notcars其中一个为空,采样后的列表自然也没有足够元素
  • 数据集本身样本量太小,你按1/5比例采样后剩余样本数不足,比如all_cars总共只有5个样本,采样后cars列表只有1个元素,自然访问不到索引1

排查步骤

  1. 先验证glob读取结果,修正glob写法并加入打印验证:
# 示例为递归读取所有子目录下的png文件,后缀可替换为你实际的图像格式
images = glob.glob('/OwnCollection/**/*.png', recursive=True)
print(f"读取到的总文件数:{len(images)}")

如果输出为0,调整glob的通配符、路径、后缀参数,直到能正常读到文件。
2. 验证路径判断逻辑,在第一次循环后加入打印代码:

print(f"全量车辆样本数:{len(all_cars)},全量非车辆样本数:{len(all_notcars)}")

如果其中一个数值为0,打印单个image变量的实际内容,调整判断关键词的大小写、拼写和实际路径匹配。
3. 验证采样后样本量,在采样逻辑后加入打印代码:

print(f"采样后车辆样本数:{len(cars)},采样后非车辆样本数:{len(notcars)}")

如果数值不满足访问索引的要求,要么降低采样比例(比如把ix %5 ==0改成ix%2==0,采1/2的样本提升数量),要么把访问的索引改成小于列表长度的值,也可以加判断避免报错:

if len(cars) >= 2:
    car_image = mpimg.imread(cars[1])
if len(notcars) >=6:
    notcar_image = mpimg.imread(notcars[5])

内容的提问来源于stack exchange,提问作者Jim Hoggey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:45:03