算法解决问题:

1,从json文件中抽取数据集中的小目标pne、p11、i5、w57四种交通标志数据集

2.小目标判断标注像素范围在[32,32]

3.转为对应的xml文件

4.标出选出的类别的个数

import os
import time
import json
import cv2xml_head = '''<annotation><folder>traffic-sign</folder><!--文件名--><filename>{}</filename>  <size><width>2048</width><height>2048</height><depth>3</depth></size><segmented>0</segmented><category>{}</category>'''
xml_obj = '''<object>     <!--图片中目标类别-->   <name>{}</name><!--是否被裁减,0表示完整,1表示不完整--><truncated>0</truncated><!--是否容易识别,0表示容易,1表示困难--><difficult>0</difficult><bndbox><xmin>{}</xmin><ymin>{}</ymin><xmax>{}</xmax><ymax>{}</ymax></bndbox></object>'''
xml_end = '''
</annotation>'''
# json文件路径和用于存放xml文件的路径
anno = '/home/xiaobumidm/Yolo_mark-master/annotations.json'
xml_dir = '/home/xiaobumidm/Yolo_mark-master/jsonxml/'
labels = ['pne','p11','i5','w57']  # label for datasets
print("labels类型:",type(labels))
# 读取json文件内容,返回字典格式
with open(anno,'r',encoding='utf8')as fp:json_data = json.load(fp)#imgs数据,字典类型json_imgs=json_data['imgs']#记录小目标总数目,共2908count=0#count_pne的小目标数目count_pne=0#count_p11的小目标数目count_p11=0#count_i5的小目标数目count_i5=0#count_w57的小目标数目count_w57=0#count_pne_trian训练文件夹中pne数量count_pne_trian=0# count_p11_trian训练文件夹中p11数量count_p11_trian = 0# count_i5_trian训练文件夹中i5数量count_i5_trian = 0# count_w57_trian训练文件夹中w57数量count_w57_trian = 0#训练pne数量count_img_pne_train=0#训练p11数量count_img_p11_train=0#训练i5数量count_img_i5_train=0#训练w57数量count_img_w57_train=0# 测试pne数量count_img_pne_test=0# 测试p11数量count_img_p11_test=0# 测试i5数量count_img_i5_test=0# 测试w57数量count_img_w57_test=0#图片总数count_image=0;table=['pne']for item in json_imgs.items():#item是tuple类型 ,item元组中共有两个元素,一开始的ID和图片详细信息#detail_info为图片详细信息,是字典类型,含有path,objects,id三个key值detail_info=item[1]#path图片路径image_path=detail_info['path']if image_path.find('train')!=-1 or image_path.find('test')!=-1:#图片含有的目标,list类型image_objects=detail_info['objects']# 图片的idimage_id = detail_info['id']# flag_category记录category的标记flag_category = ''#obj表示一个图片中目标信息obj=''for info in range(len(image_objects)):# object_info是object的详细信息,数据类型为字典,包含category,objectsobject_info = image_objects[info]#object_category是object的category,字符串object_category = object_info['category']# object_bbox为字典类型,存放目标信息xmin,ymin,xmax,ymaxobject_bbox = object_info['bbox']#x_rang目标的x间的大小,xmax-xminx_rang=object_bbox['xmax']-object_bbox['xmin']#目标的y间的大小,ymax-yminy_rang=object_bbox['ymax']-object_bbox['ymin']#flag=0if x_rang <= 32 and y_rang <= 32:if object_category == 'pne':if flag_category == '':flag_category = object_categoryobj+=xml_obj.format(labels[0],str(object_bbox['xmin']),str(object_bbox['ymin']),str(object_bbox['xmax']),str(object_bbox['ymax']))if image_path.find('train') != -1:count_pne_trian+=1count_pne += 1count += 1if object_category == 'p11':if flag_category == '':flag_category = object_categoryobj += xml_obj.format(labels[1], str(object_bbox['xmin']),str(object_bbox['ymin']),str(object_bbox['xmax']), str(object_bbox['ymax']))if image_path.find('train') != -1:count_p11_trian+=1count_p11 += 1count += 1if object_category == 'i5':if flag_category == '':flag_category = object_categoryobj += xml_obj.format(labels[2], str(object_bbox['xmin']),str(object_bbox['ymin']),str(object_bbox['xmax']), str(object_bbox['ymax']))if image_path.find('train') != -1:count_i5_trian+=1count_i5 += 1count += 1if object_category == 'w57':if flag_category == '':flag_category = object_categoryobj += xml_obj.format(labels[3], str(object_bbox['xmin']),str(object_bbox['ymin']),str(object_bbox['xmax']), str(object_bbox['ymax']))if image_path.find('train') != -1:count_w57_trian+=1count_w57 += 1count += 1print('x_rang:', x_rang)print('y_range:', y_rang)#表示有合适类别的小目标的时候开始创建xml文件,存放在了test和train文件夹下面if flag_category!='' :if image_path.find('train') != -1:if flag_category=='pne':count_img_pne_train+=1xml_name = os.path.join(xml_dir + 'trains/pne/', str(image_id) + '.xml')if flag_category=='p11':count_img_p11_train+=1xml_name = os.path.join(xml_dir + 'trains/p11/', str(image_id) + '.xml')if flag_category=='i5':count_img_i5_train+=1xml_name = os.path.join(xml_dir + 'trains/i5/', str(image_id) + '.xml')if flag_category=='w57':count_img_w57_train+=1xml_name = os.path.join(xml_dir + 'trains/w57/', str(image_id) + '.xml')else :if flag_category=='pne':count_img_pne_test+=1xml_name = os.path.join(xml_dir + 'tests/pne/', str(image_id) + '.xml')if flag_category=='p11':count_img_p11_test+=1xml_name = os.path.join(xml_dir + 'tests/p11/', str(image_id) + '.xml')if flag_category=='i5':count_img_i5_test+=1xml_name = os.path.join(xml_dir + 'tests/i5/', str(image_id) + '.xml')if flag_category=='w57':count_img_w57_test+=1xml_name = os.path.join(xml_dir + 'tests/w57/', str(image_id) + '.xml')count_image+=1print("xml_name:"+xml_name)print("image_id:",image_id)#xml的头部信息传入参数值,文件名字和类别head=xml_head.format(str(xml_name),str(flag_category))#xml的尾部信息end=xml_end#向xml文件中写入内容with open(xml_name, 'w') as f:f.write(head+obj+end)print('count:', count)print('count_pne:', count_pne)print('count_pne_trian:',count_pne_trian)print('count_pne_test:',count_pne - count_pne_trian)print('count_p11:', count_p11)print('count_p11_trian:', count_p11_trian)print('count_p11_test:', count_p11 - count_p11_trian)print('count_i5:', count_i5)print('count_i5_trian:', count_i5_trian)print('count_i5_test:', count_i5 - count_i5_trian)print('count_w57:', count_w57)print('count_w57_trian:', count_w57_trian)print('count_w57e_test:', count_w57 - count_w57_trian)print('count_img_pne_train:',count_img_pne_train)print('count_img_p11_train:',count_img_p11_train)print('count_img_i5_train:',count_img_i5_train)print('count_img_w57_train:',count_img_w57_train)print('count_img_pne_test:',count_img_pne_test)print('count_img_p11_test:',count_img_p11_test)print('count_img_i5_test:',count_img_i5_test)print('count_img_w57_test:',count_img_w57_test)print('count_image:', count_image)

count值:

python实现tsinghua-tencent 100000数据集的json文件转为xml文件相关推荐

  1. 将xls表格文件转为xml文件以及json格式的文件,支持2010xls解析

    项目需求,要通过数据库将数据以xls文件格式导出.直接解析xls的文件是没法解析的,所以需要通过解析成xml或者json格式文件后进一步处理.2003版本的Excel有65536的限制.搞了个java ...

  2. python批量json文件转xml文件脚本(附代码)

    场景:在使用了mask rcnn跑实验后标注了大量地json格式文件,现在打算使用yolo和faster rcnn 跑实验 所以需要将之前地json文件转为xml     但是找了很久,没发现有批量处 ...

  3. python转csv_python脚本如何将Excel文件转为csv文件(代码)

    本篇文章给大家带来的内容是关于python脚本如何将Excel文件转为csv文件(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助.#!/usr/bin/env python __ ...

  4. python csv转excel_将Excel文件转为csv文件的python脚本

    将Excel文件转为csv文件的python脚本 #!/usr/bin/env python __author__ = "lrtao2010" ''' Excel文件转csv文件脚 ...

  5. 比赛中学习(2)-voc数据集制作中将.txt文件变为.xml文件

    描述 和voc数据集制作有一点不同的是,因为参加的比赛中坐标给了4个,也就是说目标的形状可能是是平行四边形.所以和voc数据集有点不同啊.放出一张.txt文件的形式 最后的结果大致是这样的(和上面的图 ...

  6. Python 批量将.xlsx文件转为.xls文件

    工作需要,需要向xls文件里写入数据.由于xlrd\xlwt写入的数据不带格式,只好把xls模板先转为xlsx格式,用openpyxl批量写入完后再批量转为xls. 百度找的转换实例,实际应用时生成的 ...

  7. BDD100K数据集的Jason文件转xml文件

    针对交通灯数据集,因为其包含其它标签,而我这里只需要标签为traffic light的 一共是70000个jason文件 对应的路径文件应该这样,每个人存放的位置不一致,所以自行设置就行 文件结构如图 ...

  8. python中dom模块_Python中使用dom模块生成XML文件示例

    在Python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文件,下一篇文章再继续介绍Dom解析XML文件. 在生成XML文件中,我们主 ...

  9. python改文件名_python批量修改文件名、批量修改xml文件的path和filename

    1. python批量修改文件名(控制文件名的起始编号) import os path = "E:/Project/label/fire/" # 目标路径 filename_lis ...

最新文章

  1. git 和 vim 学习笔记
  2. 【Binder 机制】AIDL 分析 ( 创建 Service 服务 | 绑定 Service 远程服务 )
  3. python程序经常被杀死之谜
  4. c语言尖括号 注释,关于C语言include尖括号和双引号的对话
  5. MaxCompute 挑战使用SQL进行序列数据处理
  6. oracle的基本概念,oracle的基本概念
  7. 消息中间件--RabbitMQ --死信队列
  8. IP网络中的路由聚合的解析
  9. 2021-09-23
  10. listview刷新
  11. 用Geek Uninstaller在win10下卸载office2010
  12. 手机APP测试流程方法
  13. Netlog的数据库及LAMP架构
  14. bc547可以用8050代换吗_常用三极管代换型号
  15. WPBeginner年满10岁-反思,更新和WordPress赠品(奖金124,000美元以上)
  16. 腾讯开源运维 PaaS 平台
  17. 科研日志--python大文件打开内存溢出
  18. python计算线性相关系数_Python+pandas计算数据相关系数(person、Kendall、spearman)
  19. 【论文笔记】Multi-Interactive Attention Network for Fine-grained Feature Learning in CTR Prediction
  20. 【nginx】405 not allowed问题解决方法

热门文章

  1. android中wifi输入的密码保存的路径
  2. PDF阅读器中如何改变线条颜色、线宽和线型等
  3. ubuntu安装vmware 64位
  4. 4-30 HTML 细节摘录
  5. 是什么决定了我们以何种方式赚钱?
  6. 局域网不能进入别人的共享
  7. Qtopia-2.2.0启动脚本
  8. 部署Symantec Antivirus 10.0网络防毒服务器之七
  9. php 截取某个字符,PHP_php截取指定2个字符之间字符串的方法,本文实例讲述了php截取指定2个 - phpStudy...
  10. 信息学奥赛一本通 1088:分离整数的各个数 | OpenJudge NOI 1.5 28:分离整数的各个数位