import random,tqdm from PIL import Image for x in tqdm.tqdm(datas): img = Image.open(x) classes = x.split("/")[-2] if random.random()>0.8: if not os.path.exists(f"dataset/val/{classes}/"): os.mkdir(f"dataset/val/{classes}/") img.save(x.replace("original","val")) else: if not os.path.exists(f"dataset/train/{classes}/"): os.mkdir(f"dataset/train/{classes}/") img.save(x.replace("original","train"))
时间: 2024-02-19 17:01:40 浏览: 101
PIL.Image.open和cv2.imread的比较与相互转换的方法
5星 · 资源好评率100%
这段代码是一个数据集划分的脚本,主要是将一个原始数据集按照 8:2 的比例分成训练集和验证集,并按照类别存储到不同的目录中。
具体解释如下:
- `import random, tqdm` 导入了 random 和 tqdm 两个 Python 模块,random 模块用于生成随机数,tqdm 模块用于显示进度条。
- `from PIL import Image` 导入了 PIL 模块中的 Image 类,用于打开和保存图片。
- `for x in tqdm.tqdm(datas):` 循环遍历数据集,tqdm 用于显示遍历进度条,`datas` 是数据集列表。
- `img = Image.open(x)` 打开当前遍历到的图片。
- `classes = x.split("/")[-2]` 从图片路径中提取类别,类别名称为路径的倒数第二个分隔符(“/”)之间的字符串。
- `if random.random()>0.8:` 随机生成一个 0~1 之间的随机数,如果大于 0.8,则将当前图片存储到验证集目录。
- `if not os.path.exists(f"dataset/val/{classes}/"):` 判断验证集目录是否存在,如果不存在,则创建目录。
- `img.save(x.replace("original","val"))` 将当前图片保存到验证集目录中,将原始数据集路径中的“original”替换为“val”作为保存路径。
- `else:` 如果随机数小于等于 0.8,则将当前图片存储到训练集目录。
- `if not os.path.exists(f"dataset/train/{classes}/"):` 判断训练集目录是否存在,如果不存在,则创建目录。
- `img.save(x.replace("original","train"))` 将当前图片保存到训练集目录中,将原始数据集路径中的“original”替换为“train”作为保存路径。
阅读全文