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

Python读取目录分类图片存入数组仅能读到disgust类问题求助

问题原因

  • 缩进错误:遍历图片的for img in Files:循环完全放在了遍历分类的for category in Classes:循环外部。分类遍历每次迭代都会覆盖total和Files变量,等所有分类遍历完成后,这两个变量存储的是最后一个分类disgust对应的路径和文件列表,因此后续图片遍历只会处理disgust分类的数据。
  • 变量名不匹配:前面定义分类标签的变量是labels,后续打印时写的是label,运行会抛出未定义变量的报错。

修正方案

import os
import cv2

# 提前定义基础参数,按实际需求修改
Datadir = "你的数据集根目录路径"
img_size = 48
Classes = ['happy', 'surprise', 'fear', 'angry', 'neutral', 'sad', 'disgust']
Training_data = []

def create_training_Data():
    for category in Classes:
        class_num = Classes.index(category)
        # 用os.path.join拼接路径,兼容不同操作系统
        total = os.path.join(Datadir, category)
        Files = os.listdir(total)
        # 图片遍历缩进放到分类遍历内部,每个分类下的图片都会被处理
        for img in Files:
            file_main = os.path.join(total, img)
            print(f"{file_main}   {str(class_num)}")
            img_array = cv2.imread(file_main)
            # 增加异常判断,跳过损坏无法读取的图片
            if img_array is None:
                continue
            new_array = cv2.resize(img_array, (img_size,img_size))
            Training_data.append([new_array, class_num])

# 调用函数执行数据读取
create_training_Data()

内容的提问来源于stack exchange,提问作者Anox Software Technology

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:36:05