Ao fazer tarefas de aprendizado de máquina no processamento de imagens, às vezes envolve conjuntos de dados de entrada e rótulo que precisam fazer o mesmo pré-processamento, como segmentação. Quando o conjunto de dados de rótulo é dividido de acordo com as regras, as partes correspondentes na entrada precisam ser o mesmo. Registre aqui se a entrada for dividida igualmente de acordo com o rótulo já dividido (aleatoriamente proporcionalmente).
1. Primeiro escreva o nome de cada parte da imagem sob o rótulo no txt
ls -R /home/datalab/work/datasets/test_7pilang/*.jpg > file.txt
2. De acordo com o nome de cada arquivo no txt, percorra a pasta de entrada, filtre as imagens correspondentes na entrada e mova para o diretório especificado. (Pode haver um-para-muitos, se houver um rótulo, mas a entrada tem RGB, e bandas infravermelhas IR, etc., mas o nome geralmente é diferente apenas no sufixo, então use o método de julgar se ele contém o string correspondente)
import os,shutil
path = r"test_file.txt"
#传入要读的文件路径
filee = open(path,"r",encoding="utf-8",errors="ignore")
sourceDir="/home/xzx/Project/Spatiotemporal/data/singleImage/cloudy" #源目录
targetDir="/home/xzx/Project/Spatiotemporal/data/singleImage/test/" #目标目录
while True:
mystr = filee.readline()#表示一次读取一行
mystr = mystr[:-5]
if not mystr:
#读到数据最后跳出,结束循环。数据的最后也就是读不到数据了,mystr为空的时候
break
for root, dirs, files in os.walk(sourceDir):
for file in files:
result = mystr in file
if result == True:
shutil.move(os.path.join(root,file),targetDir) #移动