最近在做指静脉识别方向的探索,下午划分了一下山东大学的指静脉数据集。将其划分成了636个类,该数据集为106个志愿者左右手,每只手3根手指,我们以每根手指划分为一个类别,即106x2x3 = 636。分享一下划分该数据集的代码。
import os
import shutil
dir = 'D:/123/database/data_finger/Finger Vein Database' #数据集路径
train_index = 1
test_index = 1
lists=os.listdir(dir)
print(lists)
try:
os.mkdir("D:/123/database/data_finger/Finger_divide") #这里换为划分后的文件路径
os.mkdir("D:/123/database/data_finger/Finger_divide/train") #下面的所有路径也换一下
os.mkdir("D:/123/database/data_finger/Finger_divide/test")
except:
pass
for i in lists:
fpl = dir + '/' + i + '/left'
fpr = dir + '/' + i + '/right'
lists2 = os.listdir(fpl)
if train_index < 10:
i = "00" + str(train_index)
elif train_index < 100:
i = "0" + str(train_index)
else:
i = str(train_index)
if int(train_index) + 1 < 10:
i1 = "00" + str(int(train_index) + 1)
elif int(train_index) + 1 < 100:
i1 = "0" + str(int(train_index) + 1)
else:
i1 = str(int(train_index) + 1)
if int(train_index) + 2 < 10:
i2 = "00" + str(int(train_index) + 2)
elif int(train_index) + 2 < 100:
i2 = "0" + str(int(train_index) + 2)
else:
i2 = str(int(train_index) + 2)
try:
os.mkdir("D:/123/database/data_finger/Finger_divide/train/" + i)
os.mkdir("D:/123/database/data_finger/Finger_divide/train/" + i1)
os.mkdir("D:/123/database/data_finger/Finger_divide/train/" + i2)
os.mkdir("D:/123/database/data_finger/Finger_divide/test/" + i)
os.mkdir("D:/123/database/data_finger/Finger_divide/test/" + i1)
os.mkdir("D:/123/database/data_finger/Finger_divide/test/" + i2)
except:
pass
for j in lists2:
if j[0] == 'i':
if int(j[-5]) < 5:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/train/" + i + "/" + j)
else:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/test/" + i + "/" + j)
if j[0] == 'm':
if int(j[-5]) < 5:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/train/" + i1 + "/" + j)
else:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/test/" + i1 + "/" + j)
if j[0] == 'r':
if int(j[-5]) < 5:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/train/" + i2 + "/" + j)
else:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/test/" + i2 + "/" + j)
train_index += 3
lists2 = os.listdir(fpr)
if train_index < 10:
i = "00" + str(train_index)
elif train_index < 100:
i = "0" + str(train_index)
else:
i = str(train_index)
if int(train_index) + 1 < 10:
i1 = "00" + str(int(train_index) + 1)
elif int(train_index) + 1 < 100:
i1 = "0" + str(int(train_index) + 1)
else:
i1 = str(int(train_index) + 1)
if int(train_index) + 2 < 10:
i2 = "00" + str(int(train_index) + 2)
elif int(train_index) + 2 < 100:
i2 = "0" + str(int(train_index) + 2)
else:
i2 = str(int(train_index) + 2)
try:
os.mkdir("D:/123/database/data_finger/Finger_divide/train/" + i)
os.mkdir("D:/123/database/data_finger/Finger_divide/train/" + i1)
os.mkdir("D:/123/database/data_finger/Finger_divide/train/" + i2)
os.mkdir("D:/123/database/data_finger/Finger_divide/test/" + i)
os.mkdir("D:/123/database/data_finger/Finger_divide/test/" + i1)
os.mkdir("D:/123/database/data_finger/Finger_divide/test/" + i2)
except:
pass
for j in lists2:
if j[0] == 'i':
if int(j[-5]) < 5:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/train/" + i + "/" + j)
else:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/test/" + i + "/" + j)
if j[0] == 'm':
if int(j[-5]) < 5:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/train/" + i1 + "/" + j)
else:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/test/" + i1 + "/" + j)
if j[0] == 'r':
if int(j[-5]) < 5:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/train/" + i2 + "/" + j)
else:
shutil.copyfile(fpl + '/' + j, "D:/123/database/data_finger/Finger_divide/test/" + i2 + "/" + j)
train_index += 3