1. 问题描述
做迁移时候用到公共数据集ImageCLEF, 但是给的结构如图:
有b,c,i, p四种图像数据,和list数据,对应每一条数据的名称及其标签,记录举例如下:
b/252.car-side-101/252_0446.jpg 6
2.目标:做成如下格式
每种图片归为自己类别
3. 脚本如下:
3.1 查看目录下文件
import os
import shutil
# 列出所有txt记录文件
Domain_Dir = os.listdir('image-clef/list/')
Domain_Dir
结果如下:
['bList.txt', 'cList.txt', 'iList.txt', 'pList.txt']
3.2 创建对应的文件类别目录
# 创建bList对应的文件目录
with open('image-clef/list/' + 'bList.txt', 'r') as f:
for i in f:
# 获取每种记录类别
kind = i.strip('\n').split(' ')[1]
# 新的文件目录名称
path = 'image-clefback/b/' + kind
# 判断该类别目录是否存在
isExists = os.path.exists(path)
# 不存在则创建目录
if not isExists:
os.makedirs(path)
结果如下:
3.3 对图像数据进行归类
with open('image-clef/list/' + 'bList.txt', 'r') as f:
for i in f:
# 获取txt中图片的名称
picture_name = i.strip('\n').split(' ')[0].split('/')[2]
# 获取对应的类别
kind = i.strip('\n').split(' ')[1]
# 移动图片到分类的文件夹
if picture_name in os.listdir('image-clef/b'):
# file_path记录原始图片位置
file_path = 'image-clef/b/' + picture_name
# newpath表示目标文件目录
newpath = 'image-clefback/b/' + kind
#移动
shutil.copy(file_path, newpath)
结果如下:
扫描二维码关注公众号,回复:
10279388 查看本文章
4.如果不想自己处理,可以下载我处理后的数据,包含原始数据。
附链接处理好已分类 https://download.csdn.net/download/l8947943/12013168
原生数据链接 https://drive.google.com/file/d/0B9kJH0-rJ2uRS3JILThaQXJhQlk/view?usp=sharing