在yolov3目标识别任务中,有一个必不可少的步骤,就是标签的格式转换,例如用imagelabel标注了目标框,但是得到的标签格式为xml,如果想将他转换为txt格式如何处理?
转换成
000001.jpg 366,29,441,164 red
上述是一个例子, 假设文件夹A下有若干个xml文件,
需要转换成若干行如下的txt文件,例如,
000001.jpg 366,29,441,164 red
000002.jpg 238,34,453,123 green
.....
可参考我写的代码。
import os
import xml.etree.ElementTree as ET
path=r"G:\lacoo_dataset\detector\train_ann"
class_list=["red","yellow","green","right","stop"]
def xml_text_sigle(path,str_):
tree = ET.parse(path)
root=tree.getroot()
for child in root:
if child.tag=="filename":
str_+=child.text
str_+=" "
if child.tag=="object":
for chileren in child:
if chileren.tag=="bndbox":
for i in range(4):
str_+=chileren[i].text
if i<3:
str_+=","
if chileren.tag=="name":
str_+=str(class_list.index(chileren.text))
str_+=" "
str_list = str_.split(" ")
str_list.append(str_list[1])
str_list.remove(str_list[1])
str_ = " ".join(str_list)
return str_
def xml_test(path):
t = open("t.txt", "w")
for i in os.listdir(path):
t.writelines(xml_text_sigle(os.path.join(path,i),"")+"\n")
xml_test(path)
这里将标签用数字代替,得到的txt格式为