python解析xml+得到pascal voc xml格式用于目标检测+美化xml

1.python解析xml

    img_path='./data/001.tif'xml_path='./xml/001.xml'img=cv2.imread(img_path)# cv2.imshow('img', img)# cv2.waitKey(0)print(img.shape)try:xmlp = ET.XMLParser(encoding="utf-8")tree = ET.parse(xml_path, parser=xmlp)root = tree.getroot()print(tree)print(root)except Exception as e:print(e, xml_path)content_info={}for i in tree.iterfind('.//正文组/正文'):print("i.attrib['篇目号']", i.attrib['篇目号'])for j in i.findall('篇目坐标'):print(j.text)print(type(j.text))content_info[i.attrib['篇目号']] =j.textprint('content_info=',content_info)

若要更改xml内容,可以

new_point='1,2,3,4'
j.text = new_point
tree.write('output_test.xml', encoding='utf-8')

2. 得到pascal voc xml格式用于目标检测

img_dir = "./images/train"
csv_dir = "./train_xml.csv"
xml_dir = "./Annotations"
if not os.path.exists(xml_dir):os.mkdir(xml_dir)imgs_path_Lists = [os.path.join(img_dir,i) for i in os.listdir(img_dir)]df=pd.read_csv(csv_dir).copy()
df_value=df.values
print(df_value.shape)
coord_h,coord_w=df_value.shape
print(df_value[:2])
for img_path_List in imgs_path_Lists:im = Image.open(img_path_List)width, height = im.sizeimg_name=img_path_List.split('/')[-1]# write in xml filexml_file = open((xml_dir + '/' + img_name.split('.jpg')[0] + '.xml'), 'w')xml_file.write('<annotation>\n')xml_file.write('    <folder>steel</folder>\n')xml_file.write('    <filename>' + img_name + '</filename>\n')xml_file.write('    <size>\n')xml_file.write('        <width>' + str(width) + '</width>\n')xml_file.write('        <height>' + str(height) + '</height>\n')xml_file.write('        <depth>3</depth>\n')xml_file.write('    </size>\n')for i in df_value:if i[0].split('/')[-1]==img_name:xmin=i[1]ymin=i[2]xmax=i[3]ymax=i[4]class_name=i[-1]# write the region of image on xml filexml_file.write('    <object>\n')xml_file.write('        <name>' + class_name + '</name>\n')xml_file.write('        <pose>Unspecified</pose>\n')xml_file.write('        <truncated>0</truncated>\n')xml_file.write('        <difficult>0</difficult>\n')xml_file.write('        <bndbox>\n')xml_file.write('            <xmin>' + str(xmin) + '</xmin>\n')xml_file.write('            <ymin>' + str(ymin) + '</ymin>\n')xml_file.write('            <xmax>' + str(xmax) + '</xmax>\n')xml_file.write('            <ymax>' + str(ymax) + '</ymax>\n')xml_file.write('        </bndbox>\n')xml_file.write('    </object>\n')xml_file.write('</annotation>')

3.美化xml

原始xml如下

<?xml version='1.0' encoding='utf-8'?>
<lab><person name='Blue'><age>22</age><gender>male</gender></person><person name='Yellow'><age>22</age><gender>female</gender></person></lab>

代码:

def prettyXml(element, indent, newline, level = 0): # elemnt为传进来的Elment类,参数indent用于缩进,newline用于换行if element:  # 判断element是否有子元素if element.text == None or element.text.isspace(): # 如果element的text没有内容element.text = newline + indent * (level + 1)else:element.text = newline + indent * (level + 1) + element.text.strip() + newline + indent * (level + 1)#else:  # 此处两行如果把注释去掉,Element的text也会另起一行#element.text = newline + indent * (level + 1) + element.text.strip() + newline + indent * leveltemp = list(element) # 将elemnt转成listfor subelement in temp:if temp.index(subelement) < (len(temp) - 1): # 如果不是list的最后一个元素,说明下一个行是同级别元素的起始,缩进应一致subelement.tail = newline + indent * (level + 1)else:  # 如果是list的最后一个元素, 说明下一行是母元素的结束,缩进应该少一个subelement.tail = newline + indent * levelprettyXml(subelement, indent, newline, level = level + 1) # 对子元素进行递归操作
def testXML():from xml.etree import ElementTree as ETtree = ET.parse('test.xml')root = tree.getroot()print(root)# #查看tag和attrib# for person in root:#     print(person.tag, person.attrib)ZF_COORD = ET.Element('字符坐标')ZWZ = ET.SubElement(ZF_COORD, '正文组')#这里需要把001变成需要的篇目号ZW = ET.SubElement(ZWZ , '正文',{'篇目号':"001"})#栏目LM=ET.SubElement(ZW, '栏目')LM.text = '12,12,334,123;12,34,45,56'#引题YT=ET.SubElement(ZW,'引题')YT.text='12,12,334,123;12,34,45,56'# 标题BT = ET.SubElement(ZW, '标题')BT.text = '12,12,334,123;12,34,45,56'# 副题FT = ET.SubElement(ZW, '副题')FT.text = '12,12,334,123;12,34,45,56'# 小标题XBT = ET.SubElement(ZW, '小标题')XBT.text = '12,12,334,123;12,34,45,56'# 作者author = ET.SubElement(ZW, '作者')author.text = '12,12,334,123;12,34,45,56'# # 向根节点添加新的子节点 root.append(ZF_COORD)# 写入 tree.write('./sample.xml', encoding="utf-8",xml_declaration=True)#美化作用tree = ET.parse('./sample.xml')  # 解析test.xml这个文件,该文件内容如上文root = tree.getroot()  # 得到根元素,Element类prettyXml(root, '\t', '\n')  # 执行美化方法# ET.dump(root)tree.write('./sample.xml', encoding="utf-8",xml_declaration=True)

新生成xml如下

<?xml version='1.0' encoding='utf-8'?>
<lab><person name="Blue"><age>22</age><gender>male</gender></person><person name="Yellow"><age>22</age><gender>female</gender></person><字符坐标><正文组><正文 篇目号="001"><栏目>12,12,334,123;12,34,45,56</栏目><引题>12,12,334,123;12,34,45,56</引题><标题>12,12,334,123;12,34,45,56</标题><副题>12,12,334,123;12,34,45,56</副题><小标题>12,12,334,123;12,34,45,56</小标题><作者>12,12,334,123;12,34,45,56</作者></正文></正文组></字符坐标>
</lab>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美权威报告:量子计算十年内无法落地

来源&#xff1a;云头条摘要&#xff1a;美国方面称&#xff0c;它对这项复杂的技术何时真正大有用武之地毫无头绪。美国国家科学、工程和医学科学院本周发布了一份介绍量子计算现状的报告。考虑到有人推测这类设备可能使目前的加密方案变得毫无价值&#xff0c;这个话题令人不…

“深绿” 及 AlphaGo 对指挥与控制智能化的启示

来源&#xff1a;《指挥与控制学报》摘要&#xff1a; 随着未来战争日趋复杂、人工智能突飞猛进, 指挥与控制向智能化发展成为大势所趋. 美军的 “深绿” 计划项目虽因各 种原因暂停, 但其思路和方法值得借鉴. AlphaGo 在围棋领域战胜人类顶尖水平, 其采用的方法也有一定的参考…

熵的基础知识,特征工程,特征归一化,交叉验证,grid search,模型存储与加载

1.自信息&#xff1a; 2.信息熵 3.p对Q的KL散度&#xff08;相对熵&#xff09; 证明kl散度大于等于0 4.交叉熵 可看出交叉熵信息熵相对熵 数据集地址&#xff1a;水果数据集_机器学习水果识别,水果分类数据集-机器学习其他资源-CSDN下载 一&#xff0c;类别型特征和有序性特…

5G与AI深度融合,人类世界即将产生巨变

来源&#xff1a;系数据观整理自网络摘要&#xff1a;近几年&#xff0c;科技界有两大领域越来越热&#xff1a;一个是5G&#xff0c;一个是AI。两者都是能够改变时代的颠覆性技术。单独看5G或AI技术&#xff0c;它们的发展都面临重重挑战&#xff0c; 我们不妨脑洞大开&#x…

统计学第一章--最小二乘拟合正弦函数,正则化

#coding:utf-8 import numpy as np import scipy as sp from scipy.optimize import leastsq import matplotlib.pyplot as plt # 目标函数 def real_func(x):return np.sin(2*np.pi*x)# 多项式 def fit_func(p, x):f np.poly1d(p)# print(f,f)return f(x)# 残差 def residual…

装配式建筑连入自动驾驶技术,未来城市的房子居然是这个样子......

来源&#xff1a;gooood谷德设计网概念如果说古典的城市是关于神的&#xff0c;现代城市是关于资本和权力的&#xff0c;那么未来的城市就应该是关于人与自然的。人在朝朝暮暮&#xff0c;山山水水&#xff0c;风风雨雨&#xff0c;一草一木天地之间无不有感而发&#xff0c;触…

iOS6新特征:UICollectionView介绍-非常棒 -转

传送门&#xff1a;http://www.devdiv.com/forum.php?modviewthread&tid128378 转载于:https://www.cnblogs.com/ygm900/p/3652681.html

ROC曲线,AUC值,PR曲线,AP值

Receiver Operating Characteristic (ROC) with cross validation — scikit-learn 1.0.2 documentation Precision-Recall — scikit-learn 1.0.2 documentation 一&#xff0c;ROC 横轴&#xff1a;负正类率(false postive rate FPR)特异度&#xff0c;划分实例中所有负例…

报告:最大化人工智能(AI)机遇

来源&#xff1a;199IT互联网数据中心Microsoft发布了新报告“最大化AI机遇”&#xff0c;深入调查了数字转型的一个重要的技术力量&#xff0c;人工智能&#xff08;AI&#xff09;。报告将其定义为让计算机像人一样观察、学习、分析和评价以进行决策&#xff0c;解决问题的一…

统计学基本知识一

声明&#xff1a;文中的图来自于可汗学院公开课&#xff0c;若有侵权&#xff0c;联系我删除。 均值&#xff1a;一组数相加后除以这一组数的个数。 中位数&#xff1a;一组数从小到大排列&#xff0c;最中间的那个数&#xff0c;如果是偶数个&#xff0c;两个相加后除以2&am…

中科院陆汝钤获吴文俊人工智能最高成就奖,百度王海峰获吴文俊人工智能杰出贡献奖...

来源&#xff1a;AI 科技评论12 月 9 日上午&#xff0c;被誉为「中国智能科学技术最高奖」的吴文俊人工智能科学技术奖在苏州举行颁奖典礼。本届吴文俊人工智能奖共对 70 项人工智能成果授奖&#xff0c;包括吴文俊人工智能最高成就奖 1 项&#xff0c;吴文俊人工智能杰出贡献…

统计学基本知识二

声明&#xff1a;文中的图来自于可汗学院公开课&#xff0c;若有侵权&#xff0c;联系我删除。 中心极限定理&#xff1a;随着样本容量n的增加&#xff0c;样本均值或者样本和的频率图将很接近正态分布。 如下图就在求解样本均值。 如下图就是样本均值的频率图&#xff0c;很…

AI+零售:人工智能撬动零售变革

来源&#xff1a;乐晴智库精选人工智能的快速发展将有助于赋能新零售商&#xff0c;有效重构零售行业“人、货、场”等要素&#xff0c;提升各环节效率&#xff0c;最终提升消费者购物体验&#xff0c;推动零售行业迎来第五次变革。近年来&#xff0c;在数据、算法、技术等方面…

统计学基本知识三

声明&#xff1a;文中的图来自于可汗学院公开课&#xff0c;若有侵权&#xff0c;联系我删除。 假设检验&#xff1a; 先看一个z分布的例子&#xff1a; 注意&#xff1a;零假设一般倾向于保守的。 在上图中&#xff1a; 1、先假设零假设成立&#xff0c;即药物无效&#x…

测试归测试,自动驾驶向个人全面开放依然长路漫漫

来源&#xff1a;网易智能摘要在北京某地&#xff0c;乘客们正等待着乘坐百度“阿波罗”无人驾驶汽车。最近&#xff0c;百度与福特汽车启动了为期两年的L4级别自动驾驶联合测试项目&#xff0c;在特定的地理区域和特定天气条件下行驶无人驾驶汽车。自亨利福特的移动装配生产线…

利用opencv添加mask

第一种做法&#xff1a; import os import sys import random import math import numpy as np import skimage.io import matplotlib import matplotlib.pyplot as plt import cv2 import colorsys os.environ[CUDA_VISIBLE_DEVICES] 1 # Root directory of the project RO…

白宫计划2019年春季发布新版人工智能研究战略

来源&#xff1a;人工智能和大数据近日&#xff0c;据白宫科技政策办公室人工智能助理主任Lynne Parker表示&#xff0c;特朗普政府计划更新由奥巴马政府首次发布的人工智能研究与发展战略。2016年美国国家人工智能研究与发展战略计划概述了美国联邦研究资金的投入重点。2018年…

统计学基本知识四

代码可以参考之前的博客&#xff1a; https://blog.csdn.net/fanzonghao/article/details/85643653 https://blog.csdn.net/fanzonghao/article/details/81637669 声明&#xff1a;文中的图来自于可汗学院公开课&#xff0c;若有侵权&#xff0c;联系我删除。 线性回归&…

Openstack Havana的两个排错过程

问题一&#xff1a;Timeout wating on RPC response, topic:"network" 描述&#xff1a; 启动实例一直等待&#xff0c;然后变为error。查看日志&#xff0c;是 timeout waiting on rpc response, topic "network", method: "validate_networks"…

生活|全民AI时代:干洗店老板、高中生齐上阵

来源&#xff1a;大数据文摘 1975年冬天&#xff0c;旧金山半岛的广告牌上出现了一则有点“奇怪”的消息。“你是否在尝试自己做电脑开发呢&#xff1f;&#xff0c;如果是的话&#xff0c;参加我们的聚会&#xff01;”这则通告来自当年的Homebrew计算机俱乐部。Homebrew是一…