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
相关产品推荐
相关产品推荐

