De acordo com a divisão do conjunto de dados do rótulo para fazer a mesma divisão do conjunto de dados de entrada

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) #移动

Acho que você gosta

Origin blog.csdn.net/qq_41872271/article/details/107618831
Recomendado
Clasificación