Caminho da imagem e conversão do caminho do rótulo

        Recentemente, eu estava olhando o código do módulo de carregamento de dados do yolov5, que envolve um trecho de código que obtém o caminho do rótulo de acordo com o caminho da imagem. Primeiro, o formato de armazenamento do conjunto de dados do yolov5 é que Imagens e rótulos são pastas do mesmo nível do diretório. A nomenclatura e os rótulos da imagem em Imagens Os nomes dos rótulos em são os mesmos, mas os sufixos são diferentes. As imagens estão no formato de sufixo de imagem e o sufixo do rótulo em rótulos é .txt.

        Escrevi um código separado para testar e ver os resultados da execução. O código é o seguinte:

import os

img_paths = ['C:\\Users\\wang\\Images\\img1.jpg',
             'C:\\Users\\wang\\Images\\img2.jpg'] # 图片路径列表

def img2label_paths(img_paths):
    # os.sep为路径里的分隔符(不同系统路径的分隔符不同,os.sep可以根据系统自适应)
    sa, sb = f'{os.sep}Images{os.sep}', f'{os.sep}labels{os.sep}'  # sa: /images/, sb: /labels/
    labelPaths = [] # 存储标签路径的列表
    for p in img_paths:
        path = p.replace('\\', os.sep)  # 用os.sep替换原路径分隔符 '\\'
        a = path.rsplit(sa, 1)  # 以sa为分隔符,1的意思是遇见第一个sa分割结束,b为含2个元素的列表
        print(a)   # 以img1为例(下同):a:['C:\\Users\\wang', 'img1.jpg']
        b = sb.join(a)  # 用sa连接b中的两个元素
        print(b)  # b: C:\Users\wang\labels\img1.jpg
        c = p.rsplit('.', 1)[0] + '.txt'  # 以'.'为分隔符 [0]表示取分割之后列表中的第一个元素再和'.txt'相连
        labelPaths.append(c)    # c: C:\\Users\\wang\\Images\\img1.txt
    return labelPaths

if __name__ == "__main__":
    labelsPaths = img2label_paths(img_paths)
    print(labelsPaths)  # ['C:\\Users\\wang\\Images\\img1.txt', 'C:\\Users\\wang\\Images\\img2.txt']

        Aprender é um processo de acumulação pouco a pouco, vamos lá ~

おすすめ

転載: blog.csdn.net/weixin_48747603/article/details/127476080