自动修改yolo标签

在网上找yolo数据集,发现标签和我自己有的数据集虽然一样,但是对应不上。

比如文件中的0号标签在我数据集中为3号标签,2号标签在我数据集中为1号标签。

由于文件太多,一个一个打开修改太费时间了

写了一段python代码自动修改:

注:判断逻辑请按照自己的需求修改!!!!!

import os

#替换字符串string中指定位置p的字符为c
def sub(string,p,c):
    string = list(string)
    string[p] = c
    return ''.join(string)

path = "D:/数据集/RoadDamage/Road Damage/labels - 副本/old/" # 需要修改的文件的路径,注意/要到文件目录下
file_dir = os.listdir(path)


# 遍历该目录下的所有文件
for file in file_dir:
    file_name = os.path.join(path , file)   # 文件名file和文件路径path拼接成完整路径

    print(file_name)
    f2 = open('D:/数据集/RoadDamage/Road Damage/labels - 副本/new/' + file,'a+') # 修改后文件存放的路径
    with open(file_name) as f:  # 开始读取文件
        for line in f.readlines():  # readlines(),把文件所有的行都读取进来;
            img_file = line.strip() # 删除行后的换行符,img_file 就是每行的内容啦
            num = img_file[0]
            print("————————开始:" + img_file)
            # ———————————————下面都是你需要判断的逻辑————————————————
            if(num == "3"):
                img_file = sub(img_file,0,'0')
                f2.write(img_file + '\n')
            elif(num == "2"):
                img_file = sub(img_file,0,'1')
                f2.write(img_file + '\n')
            elif(num == "1"):
                img_file = sub(img_file,0,'2')
                f2.write(img_file + '\n')
            elif(num == "0"):
                img_file = sub(img_file,0,'3')
                f2.write(img_file + '\n')
            # ————————————————————逻辑判断结束————————————————
            print("————————结束:" + img_file)
    f2.close()

你可能感兴趣的:(python,yolo,深度学习,机器学习)