本文的背景是:已经自己做了数据集,分了train和val,现在再分一个test
内容:1、路径与列表
2、代码及需要改的地方
3、打印的结果
1、列表:
这些是图片的,路径为 C:/Users/30877/Desktop/mydata/images
这些是标签的,路径是一样的 C:/Users/30877/Desktop/mydata/labels
2、详细代码
import os
import random
from shutil import copyfile, move
# 图片的路径
train_img_path = 'C:/Users/30877/Desktop/mydata/images/train/'
val_img_path = 'C:/Users/30877/Desktop/mydata/images/val/'
test_img_path = 'C:/Users/30877/Desktop/mydata/images/test/'
# 标签的路径
train_label_path = 'C:/Users/30877/Desktop/mydata/labels/train/'
val_label_path = 'C:/Users/30877/Desktop/mydata/labels/val/'
test_label_path = 'C:/Users/30877/Desktop/mydata/labels/test/'
# 图片内容的列表:.jpg
train_img_list = os.listdir(train_img_path)
val_img_list = os.listdir(val_img_path)
test_img_list = os.listdir(test_img_path)
# 标签内容的列表:.txt
train_label_list = os.listdir(train_label_path)
val_label_list = os.listdir(val_label_path)
test_label_list = os.listdir(test_label_path)
idex_list = [] # 存放索引到的图片名字的索引值列表
for j in range(1000): # 1000:总迭代次数;可以随便设置,但要保证比train等要索引的内容数量大
idex = random.randint(1, 6600) # 6600:train or val or test 内容的总数量, 是多少个就填多少
if len(idex_list) < 100: # 100:移动的img总量
if idex in idex_list:
print('已重复,重新读取')
else:
img = train_img_path + train_img_list[idex] # 原图片路径+名字
test_img = test_img_path + train_img_list[idex] # 移动目标的路径+名字, 为test图片
move(img, test_img) # 移动照片
label = train_label_path + train_label_list[idex] # 原标签路径+名字
test_label = test_label_path + train_label_list[idex] # 移动目标的路径+名字, 为test标签
move(label, test_label) # 移动标签
idex_list.append(idex) # 存入索引值列表
name, _ = train_label_list[idex].split('.') # 获取转移图片的名字
print('转移:%s 已成功, 第: %s 个'%(name, len(idex_list)))
print('end')
需要改的地方在:6-12行、23-25行。
3、打印的结果