python 输出xml格式文件

11 篇文章 1 订阅
1 篇文章 0 订阅

File "C:\ProgramData\Anaconda3\lib\xml\etree\ElementTree.py", line 1058, in _raise_serialization_error
    "cannot serialize %r (type %s)" % (text, type(text).__name__)
TypeError: cannot serialize 1 (type int)

cElementTree 的元素下面的.text值必须是字符串,否则的话,要么在生成的xml文件里面没有该属性值,要么报错

    

python使用该库创建xml文件中添加text报错如下:

"cannot serialize %r (type %s)" % (text, type(text).__name__)
TypeError: cannot serialize 512 (type int)

512报错的Element.text添加text内容时这里为数字512,这种报错是因为xml的text内容应该为字符串,添加数字序列化报错,在外面套str()就行了,毕竟是text标签

Even though Age is intended to be a numeric value, xml attribute values should be quoted strings:

person = ElementTree.Element("Person", Name="John", Age="18")

Alternatively, if the data was stored as a variable, convert it to a string with str()

age = 18
person = ElementTree.Element("Person", Name="John", Age=str(age))
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用以下代码将YOLOv7检测的输出转换为XML格式文件: ```python import xml.etree.ElementTree as ET import numpy as np def create_xml(image_name, detections, save_path): root = ET.Element("annotation") folder = ET.SubElement(root, "folder") folder.text = "images" filename = ET.SubElement(root, "filename") filename.text = image_name size = ET.SubElement(root, "size") width = ET.SubElement(size, "width") height = ET.SubElement(size, "height") depth = ET.SubElement(size, "depth") width.text = str(detections.shape[1]) height.text = str(detections.shape[0]) depth.text = str(detections.shape[2]) for detection in detections: object_elem = ET.SubElement(root, "object") name = ET.SubElement(object_elem, "name") name.text = detection[0] bndbox = ET.SubElement(object_elem, "bndbox") xmin = ET.SubElement(bndbox, "xmin") ymin = ET.SubElement(bndbox, "ymin") xmax = ET.SubElement(bndbox, "xmax") ymax = ET.SubElement(bndbox, "ymax") xmin.text = str(int(detection[1])) ymin.text = str(int(detection[2])) xmax.text = str(int(detection[3])) ymax.text = str(int(detection[4])) tree = ET.ElementTree(root) tree.write(save_path) # 示例用法 image_name = "example.jpg" detections = np.array([["person", 100, 200, 300, 400], ["car", 50, 60, 200, 150]]) save_path = "output.xml" create_xml(image_name, detections, save_path) ``` 在上面的示例代码中,`detections` 是一个形状为 (N, 5) 的numpy数组,其中N表示检测到的物体数量。每个检测由类别名称、边界框的左上角坐标(xmin,ymin)和右下角坐标(xmax,ymax)组成。你可以根据自己的需求修改代码以适应YOLOv7模型的输出格式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值