在网上找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()