复现Kaggle皮肤癌分类代码时图片读取数量为0的问题求助
问题排查与修复方案
1. 路径拼接错误(核心问题)
你拼接图片路径时缺少了目录分隔符,导致生成的路径完全无效:
data = gb.glob(pathname=str(trainDataset + folder + '/*.jpg'))
举个例子:如果trainDataset是melanoma_cancer_dataset/train,folder是benign,拼接后会变成melanoma_cancer_dataset/trainbenign/*.jpg,这显然找不到任何文件。
修复方案:用os.path.join安全拼接路径(自动适配Windows/macOS的分隔符):
data = gb.glob(pathname=os.path.join(trainDataset, folder, '*.jpg'))
2. cv2.resize语法错误
代码里的cv2.resize(image(120,120))写法完全错误:你把image当成函数调用了,正确的写法是把image作为第一个参数,尺寸元组作为第二个参数。
修复方案:
imageList = cv2.resize(image, (120, 120))
3. 额外潜在问题排查
- 确认当前工作目录:先打印当前代码运行的目录,确保相对路径指向正确的数据集文件夹:
如果工作目录不是项目根目录,要么调整VSCode的工作目录,要么改用数据集的绝对路径。print(os.getcwd()) # 查看VSCode当前工作目录 - 过滤非目录项:
os.listdir可能返回隐藏文件等非目录内容,建议先判断是否为目录再处理:for folder in os.listdir(trainDataset): folder_path = os.path.join(trainDataset, folder) if not os.path.isdir(folder_path): continue # 跳过非目录项 data = gb.glob(pathname=os.path.join(folder_path, '*.jpg')) print(f'{len(data)} in folder {folder}') # 后续图片读取逻辑...
内容的提问来源于stack exchange,提问作者Depleted Money
相关产品推荐
相关产品推荐

