当前位置:   article > 正文

XML转YOLO数据集

xml转yolo
  1. import os
  2. import xml.etree.ElementTree as ET
  3. # VOC数据集路径
  4. voc_ann_path = "\\Annotations\\"
  5. voc_img_path = "\\JPEGImages\\"
  6. # YOLO数据集路径
  7. yolo_out_path = "\\OUT\\"
  8. # VOC类别名称和对应的编号
  9. classes = {"target": 0} # 根据实际情况修改
  10. # 遍历VOC数据集文件夹
  11. for filename in os.listdir(voc_ann_path):
  12. # 解析XML文件
  13. tree = ET.parse(voc_ann_path + filename)
  14. root = tree.getroot()
  15. # 获取图片尺寸
  16. size = root.find("size")
  17. width = int(size.find("width").text)
  18. height = int(size.find("height").text)
  19. # 创建YOLO标注文件
  20. yolo_filename = filename.replace(".xml", ".txt")
  21. yolo_file = open(yolo_out_path + yolo_filename, "w")
  22. # 遍历XML文件中的所有目标
  23. for obj in root.findall("object"):
  24. # 获取目标类别名称和边界框坐标
  25. name = obj.find("name").text
  26. xmin = int(obj.find("bndbox").find("xmin").text)
  27. ymin = int(obj.find("bndbox").find("ymin").text)
  28. xmax = int(obj.find("bndbox").find("xmax").text)
  29. ymax = int(obj.find("bndbox").find("ymax").text)
  30. # 计算边界框中心点坐标和宽高
  31. x = (xmin + xmax) / 2 / width
  32. y = (ymin + ymax) / 2 / height
  33. w = (xmax - xmin) / width
  34. h = (ymax - ymin) / height
  35. # 将目标写入YOLO标注文件
  36. class_id = classes[name]
  37. yolo_file.write(f"{class_id} {x} {y} {w} {h}\n")
  38. yolo_file.close()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/433333
推荐阅读
相关标签
  

闽ICP备14008679号