具体实现内容
准备 训练集 及 train_list.txt (保存训练图片的路径),格式如下图,每个路径下换行
按照行读取 train_list.txt,将训练集 打乱,随机选取25%的图片作为测试集,并保存到 test_path 下,图片名不变。25%比例可以自己改。
完整代码
import random
import codecs
import cv2
import os
from PIL import Image
test_path = "F:/data/images/test/"
f = codecs.open('F:/data/train_list.txt',
mode='r', encoding='utf-8') # 打开txt文件,以‘utf-8’编码读取
line = f.readline() # 以行的形式进行读取文件
dataset=[]
while line:
a = line.split('\n')[0]
# print(a)
dataset.append(a)
line = f.readline()
# 乱序
random.seed(10) # 设置种子,保证每次打乱的顺序一样,10是随意选的,你可以设置其他数字,去掉这一行则每次运行程序都打乱的不一样。
random.shuffle(dataset) # 4516=3387+1129
# [训练集, 测试集]
pos = int(len(dataset) * .75)
train = dataset[:pos]
print(len(train))
test = dataset[pos:] # 测试集
for id,img_path in enumerate(test): # id 从0开始
filepath, fullflname = os.path.split(img_path)
newpath = test_path + fullflname
print(newpath)
im = Image.open(img_path)
im.save(newpath)
f.close()