东方耀AI技术分享

标题: 目标检测之voc格式的数据集转换为csv格式 [打印本页]

作者: 东方耀    时间: 2020-12-4 22:53
标题: 目标检测之voc格式的数据集转换为csv格式



目标检测之voc格式的数据集转换为csv格式



  1. import os
  2. import glob
  3. import csv
  4. from xml.dom.minidom import parse
  5. # 目标检测之voc格式的数据集转换为csv格式

  6. # label_dict = {"0": "person", "1": "car", "2": "motorbike", "3": "bus", "4": "truck"}
  7. label_dict = {"0": "car", "1": "truck", "2": "pedestrian", "3": "bicyclist", "4": "light"}

  8. input_voc_dir = "/home/dfy888/DataSets/driving_datasets_voc"
  9. annotations_dir = os.path.join(input_voc_dir, "Annotations")
  10. JPEGImages_dir = os.path.join(input_voc_dir, "JPEGImages")

  11. xml_num = len(glob.glob(os.path.join(annotations_dir, "*.xml")))
  12. img_num = len(glob.glob(os.path.join(JPEGImages_dir, "*.jpg")))
  13. print("voc格式的图片数目={};xml文件数目={}".format(img_num, xml_num))
  14. assert xml_num == img_num, "必须相等!"

  15. # path/to/image.jpg,x1,y1,x2,y2,class_name
  16. # 某些图片没有任何的目标,仅仅作为负样本存在
  17. # /data/imgs/img_001.jpg,837,346,981,456,cow
  18. # /data/imgs/img_002.jpg,215,312,279,391,cat
  19. # /data/imgs/img_002.jpg,22,5,89,84,bird
  20. # /data/imgs/img_003.jpg,,,,,
  21. csv_train = "./train_annots.csv"
  22. csv_val = "./val_annots.csv"
  23. # class_name,id   id从0开始 不要包括背景
  24. csv_classes = "./class_list.csv"


  25. def write_to_csv(dataset_type, csv_file):
  26.     dataset_txt_file = os.path.join(input_voc_dir, "ImageSets", "Main", "%s.txt" % dataset_type)
  27.     f_csv = open(csv_file, 'w', newline='')
  28.     csv_write = csv.writer(f_csv)
  29.     with open(dataset_txt_file, "r") as f:
  30.         lines = f.readlines()
  31.         for line in lines:
  32.             img_name = line.strip()
  33.             img_path = os.path.join(JPEGImages_dir, "%s.jpg" % img_name)
  34.             xml_annotation_path = os.path.join(annotations_dir, "%s.xml" % img_name)
  35.             dom = parse(xml_annotation_path)
  36.             # 获取文档元素对象
  37.             data = dom.documentElement
  38.             objs = data.getElementsByTagName('object')
  39.             for obj in objs:
  40.                 # 获取标签中内容
  41.                 name = obj.getElementsByTagName('name')[0].childNodes[0].nodeValue
  42.                 x1 = obj.getElementsByTagName('bndbox')[0].getElementsByTagName('xmin')[0].childNodes[0].nodeValue
  43.                 y1 = obj.getElementsByTagName('bndbox')[0].getElementsByTagName('ymin')[0].childNodes[0].nodeValue
  44.                 x2 = obj.getElementsByTagName('bndbox')[0].getElementsByTagName('xmax')[0].childNodes[0].nodeValue
  45.                 y2 = obj.getElementsByTagName('bndbox')[0].getElementsByTagName('ymax')[0].childNodes[0].nodeValue
  46.                 # path/to/image.jpg,x1,y1,x2,y2,class_name
  47.                 csv_write.writerow([img_path, x1, y1, x2, y2, name])

  48.     f_csv.close()


  49. with open(csv_classes, 'w', newline='')as f:
  50.     csv_write = csv.writer(f)
  51.     for id, name in label_dict.items():
  52.         csv_write.writerow([name, id])


  53. if __name__ == "__main__":
  54.     write_to_csv("train", csv_train)
  55.     write_to_csv("val", csv_val)


复制代码





作者: leironh    时间: 2020-12-5 23:39
66666666666666
作者: leironh    时间: 2020-12-6 09:20
Python高级编程与AI数据分析课程
作者: leironh    时间: 2020-12-6 09:25

笔记写的挺好的,点个赞
作者: leironh    时间: 2020-12-6 09:29
目标检测之voc格式的数据集转换为csv格式
作者: leironh    时间: 2020-12-6 09:32
目标检测之voc格式的数据集转换为csv格式
作者: leironh    时间: 2020-12-6 09:36
目标检测之voc格式的数据集转换为csv格式目标检测之voc格式的数据集转换为csv格式
作者: leironh    时间: 2020-12-6 09:39
目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本
作者: leironh    时间: 2020-12-6 09:40
目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本
作者: leironh    时间: 2020-12-6 09:40
目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本
作者: leironh    时间: 2020-12-6 09:40
目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本目标检测之coco与voc格式的数据相互转换,并验证coco格式的脚本




欢迎光临 东方耀AI技术分享 (http://www.ai111.vip/) Powered by Discuz! X3.4