数据集和验证集的划分
# -*- coding: UTF-8
import os, random, shutil
def moveimg(fileDir, tarDir):
pathDir = os.listdir(fileDir) # 取图片的原始路径
filenumber = len(pathDir)
rate = 0.15 # 自定义抽取图片的比例,比方说100张抽10张,那就是0.1
picknumber = int(filenumber * rate) # 按照rate比例从文件夹中取一定数量图片
sample = random.sample(pathDir, picknumber) # 随机选取picknumber数量的样本图片
print(sample)
for name in sample:
shutil.move(fileDir + name, tarDir + "\\" + name)
return
def movelabel(file_list, file_label_train, file_label_val):
for i in file_list:
if i.endswith('.JPG') or i.endswith('.png'):
filename = file_label_train + "\\" + i[:-4] + '.txt' # 可以改成xml文件将’.txt‘改成'.xml'就可以了
if os.path.exists(filename):
shutil.move(filename, file_label_val)
print(i + "处理成功!")
if __name__ == '__main__':
fileDir = r"E:\GraduationProject\yolov5-7.0\AppleScab\images\train" + "\\" # 源图片文件夹路径
tarDir = r'E:\GraduationProject\yolov5-7.0\AppleScab\images\val' # 图片移动到新的文件夹路径
moveimg(fileDir, tarDir)
file_list = os.listdir(tarDir)
file_label_train = r"E:\GraduationProject\yolov5-7.0\AppleScab\labels\train" # 源图片标签路径
file_label_val = r"E:\GraduationProject\yolov5-7.0\AppleScab\labels\val" # 标签
# 移动到新的文件路径
movelabel(file_list, file_label_train, file_label_val)
图片格式转化png到jpg;反过来同理
import os
from PIL import Image
# 获取指定目录下的所有png图片
def get_all_png_files(directory):
files_list = []
for root, dirs, files in os.walk(directory):
for file in files:
if os.path.splitext(file)[1] == '.png':
files_list.append(os.path.join(root, file))
return files_list
# 批量转换png图片为jpg格式
def png2jpg(files_list):
for file in files_list:
img = Image.open(file)
new_file = os.path.splitext(file)[0] + '.jpg'
img.convert('RGB').save(new_file)
# 删除某个文件夹下中所有子文件夹的图片
def delete_images(directory):
for file in os.listdir(directory):
pic_dir=os.path.join(directory, file)
for i in os.listdir(pic_dir):
# 这里可以指定其他拓展名文件
# if file.endswith(".jpg") or file.endswith(".png") or file.endswith(".jpeg"):
if i.endswith(".png"):
os.remove(os.path.join(pic_dir, i))
print(f"Deleted {i}")
if __name__ == '__main__':
directory = "E:\GraduationProject\yolov5-7.0\AppleScab\images"
files_list = get_all_png_files(directory)
png2jpg(files_list)
delete_images(directory)