当前位置:   article > 正文

【YOLO】voc(xml格式)转换成coco(json格式)代码_python voc标注转json

python voc标注转json

这段代码的功能是将一个文件夹下的所有JSON文件转换为一个特定格式的JSON文件,转换后的JSON文件中包含了原JSON文件中的某些字段,并将其它字段按照一定的格式进行转换。

  1. # 导入必要的库
  2. import xmltodict
  3. import json
  4. import os
  5. # 输入和输出文件夹路径
  6. input_folder_path = 'json'
  7. output_folder_path = 'json_2'
  8. # 遍历输入文件夹中的所有文件
  9. for filename in os.listdir(input_folder_path):
  10. if filename.endswith('.json'):
  11. # 构造输入和输出文件路径
  12. input_file_path = os.path.join(input_folder_path, filename)
  13. output_file_path = os.path.join(output_folder_path, filename.replace('.json', '.json'))
  14. # 打开输入文件并将其解析为OrderedDict对象
  15. with open(input_file_path, 'r', encoding='utf-8') as input_file:
  16. xml_data = input_file.read()
  17. data_dict = xmltodict.parse(xml_data)
  18. # 进行数据转换
  19. anylabeling = {
  20. "version": "0.2.11",
  21. "flags": {},
  22. "shapes": [
  23. {
  24. "label": data_dict["annotation"]["object"]["name"],
  25. "text": "",
  26. "points": [
  27. [
  28. data_dict["annotation"]["object"]["bndbox"]["xmin"],
  29. data_dict["annotation"]["object"]["bndbox"]["ymin"]
  30. ],
  31. [
  32. data_dict["annotation"]["object"]["bndbox"]["xmax"],
  33. data_dict["annotation"]["object"]["bndbox"]["ymax"]
  34. ]
  35. ],
  36. "group_id": None,
  37. "shape_type": "rectangle",
  38. "flags": {}
  39. }
  40. ],
  41. "imagePath": data_dict["annotation"]["filename"],
  42. "imageData": None,
  43. "imageHeight": data_dict["annotation"]["size"]["height"],
  44. "imageWidth": data_dict["annotation"]["size"]["width"]
  45. }
  46. # 将数据写入输出文件
  47. with open(output_file_path, 'w', encoding='utf-8') as output_file:
  48. json.dump(anylabeling, output_file, indent=4)
  1. import导入了三个Python标准库和一个第三方库:
  • xmltodict:用于将XML数据转换为Python的OrderedDict对象;
  • json:用于将Python对象序列化为JSON格式的字符串;
  • os:用于操作操作系统相关的功能,如路径等;
  1. 然后定义了两个字符串变量input_folder_pathoutput_folder_path,分别表示输入和输出文件夹路径;
  2. 使用os.listdir()函数遍历输入文件夹中的所有文件,并使用if语句过滤出.json文件;
  3. 对于每个.json文件,构造了输入和输出文件的路径,分别使用os.path.join()replace()函数;
  4. 使用with语句打开输入文件,并使用xmltodict.parse()函数将XML数据解析为Python的OrderedDict对象,存储在data_dict变量中;
  5. 定义一个Python字典对象anylabeling,该对象表示特定格式的JSON数据。该字典包含以下字段:

flags:一个空字典,表示标记的额外信息;

  • shapes:一个包含一个字典元素的列表,表示要标记的图形信息;
  • imagePath:字符串类型,表示图片文件的路径;
  • imageData:None类型,表示图片的二进制数据;
  • imageHeight:整数类型,表示图片的高度;
  • imageWidth:整数类型,表示图片的宽度。
  • label:字符串类型,表示标记的名称;
  • text:字符串类型,表示标记的文本信息;
  • points:一个包含两个列表元素的列表,每个列表元素表示一个点的坐标(x, y);
  • group_id:None类型,表示分组信息;
  • shape_type:字符串类型,表示标记的形状类型;
  • flags:一个空字典,表示标记的额外信息;

data_dict中的信息填充到anylabeling中,包括图片的文件名、宽度、高度、标记的名称和位置信息;

使用with语句打开输出文件,并使用json.dump()函数将anylabeling对象序列化为JSON格式的字符串,保存到输出文件中;

当遍历完所有的.json文件时,程序结束运行。

 

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号