我有带有.xml注释的帕斯卡 voc 数据集.我想将其转换为 dakrnet .txt格式.我该怎么做?



我正在做一个视频分析项目。我有一个使用 xml.etree.ElementTree 编写的代码来解析.xml文档,但它不知何故没有给出准确的结果。

我有一个使用 python 中的 xml.etree.ElementTree 编写的代码,用于解析.xml文档,提取 xmin、xmax、ymin、ymax、图像宽度和高度的值。规范化后,将其以所需的格式附加到与图像同名的文本文件中。用于规范化的公式 i 为:

enter code here
x = (xmin + xmax)/2. * 1./width
y = (ymin + ymax)/2. * 1./height
w = (xmax - xmin) * 1./width
h = (ymax - ymin) * 1./height

我希望结果采用暗网注释格式为 .

你可以试试我的代码,看看它是否能满足你的需求。

import os
import glob
import csv
import xml.etree.ElementTree as ET
os.chdir(r'C:UsersAdministratorDesktoptest')
path = r'C:UsersAdministratorDesktoptest'
def xml_to_txt(path):
txt_list = []
for xml_file in glob.glob(path + '/*.xml'):
everyrow_xml_list = []
tree = ET.parse(xml_file)
root = tree.getroot()
everyrow_xml_list.append(path + '/' + root.find('filename').text)
for member in root.findall('object'):
xmin = str(int(member[4][0].text))
ymin = str(int(member[4][1].text))
xmax = str(int(member[4][2].text))
ymax = str(int(member[4][3].text))
if xmin=="0":
xmin="1"
if ymin=="0":
ymin="1"
if xmax=="0":
xmax="1"
if ymax=="0":
ymax="1"
value = xmin+','+ymin+','+xmax+','+ymax+','+member[0].text
everyrow_xml_list.append(value)
txt_list.append(everyrow_xml_list)#image_path x_min,y_min,x_max,y_max,class_id  x_min,y_min,x_max,y_max,class_id ……
return txt_list

def main():
image_path = path
xml2txt_list = xml_to_txt(image_path)
with open(r'D:/aaa.txt', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f,delimiter=' ')
writer.writerows(xml2txt_list)
print('Successfully converted xml to txt.')
if __name__ == '__main__':
main()

最新更新