import os
from PIL import Image
import globyolo_img = 'VOC/JPEGImages/'
yolo_txt = 'VOC/YOLO/'
voc_xml = 'VOC/Annotations/'# 目标类别
labels = ["lighthouse",  "sailboat",  "buoy", "railbar", "cargoship", "navalvessels", "passengership", "dock", "submarine", "fishingboat"]
# 匹配文件路径下的所有jpg文件,并返回列表
img_glob = glob.glob(yolo_img + '*.jpg')img_base_names = []for img in img_glob:# os.path.basename:取文件的后缀名img_base_names.append(os.path.basename(img))img_pre_name = []for img in img_base_names:# os.path.splitext:将文件按照后缀切分为两块temp1, temp2 = os.path.splitext(img)img_pre_name.append(temp1)print(f'imgpre:{img_pre_name}')
for img in img_pre_name:with open(voc_xml + img + '.xml', 'w') as xml_files:image = Image.open(yolo_img + img + '.jpg')img_w, img_h = image.sizexml_files.write('<annotation>\n')xml_files.write('   <folder>folder</folder>\n')xml_files.write(f'   <filename>{img}.jpg</filename>\n')xml_files.write('   <source>\n')xml_files.write('   <database>Unknown</database>\n')xml_files.write('   </source>\n')xml_files.write('   <size>\n')xml_files.write(f'     <width>{img_w}</width>\n')xml_files.write(f'     <height>{img_h}</height>\n')xml_files.write(f'     <depth>3</depth>\n')xml_files.write('   </size>\n')xml_files.write('   <segmented>0</segmented>\n')with open(yolo_txt + img + '.txt', 'r') as f:# 以列表形式返回每一行lines = f.read().splitlines()for each_line in lines:line = each_line.split(' ')xml_files.write('   <object>\n')xml_files.write(f'      <name>{labels[int(line[0])]}</name>\n')xml_files.write('      <pose>Unspecified</pose>\n')xml_files.write('      <truncated>0</truncated>\n')xml_files.write('      <difficult>0</difficult>\n')xml_files.write('      <bndbox>\n')center_x = round(float(line[1]) * img_w)center_y = round(float(line[2]) * img_h)bbox_w = round(float(line[3]) * img_w)bbox_h = round(float(line[4]) * img_h)xmin = str(int(center_x - bbox_w / 2))ymin = str(int(center_y - bbox_h / 2))xmax = str(int(center_x + bbox_w / 2))ymax = str(int(center_y + bbox_h / 2))xml_files.write(f'         <xmin>{xmin}</xmin>\n')xml_files.write(f'         <ymin>{ymin}</ymin>\n')xml_files.write(f'         <xmax>{xmax}</xmax>\n')xml_files.write(f'         <ymax>{ymax}</ymax>\n')xml_files.write('      </bndbox>\n')xml_files.write('   </object>\n')xml_files.write('</annotation>')

yolo格式转xml格式相关推荐

  1. voc数据集格式转换为coco数据集格式+修改xml格式文件

    voc数据集格式转换为coco格式+修改xml格式文件中部分内容 voc数据集格式→coco数据集格式 修改xml格式文件中部分内容 voc数据集格式→coco数据集格式 下面这份代码只需修改文件所在 ...

  2. 两种方式带你玩转 json 格式转 xml 格式

    你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,或者没有积分想获取项目,欢迎指教: 企鹅:869192208 文章目录 前言 方法一.使用 jdom 进行转换 方法二.使用 d ...

  3. 一个json格式转xml格式的java实现

    源代码如下: package com.test;import java.io.BufferedReader; import java.io.File; import java.io.FileInput ...

  4. 将lua数据表格 转换成json格式,xml格式

    首先转换成json,不废话直接代码: local temp = require(tableName)local function table2json(t)--将表格转换为jsonlocal func ...

  5. android解析xml文件思维导图,xmind思维导图格式转化xml格式

    前期准备 1 xmind 文件 2 python环境 3 pip 步骤: 1 升级pip:python3 -m pip install --upgrade pip 2 安装插件:pip3 instal ...

  6. 如何将xml格式转换为yolov5所需的txt格式

    如今,深度学习非常热门,制作数据集是深度学习很重要的一环.制作数据集就离不开打标签,我们打出来的标签可能是 txt 格式 或者 xml 格式 或者json格式,但是yolo运行的标签格式是txt格式 ...

  7. java接收xml数据_关于java后台如何接收xml格式的数据

    业务场景:用户发送下单请求,格式为xml格式,服务器接收数据完成下单,并返回结果给客户. 请求格式: 这段请求报文是xml格式的,在后台我们可以使用 javax.xml.bind.annotation ...

  8. Map转xml格式字符串

    这两种方式只能从Map<String,String>格式转为xml格式 第一种: public static String mapToXml(Map<String, String&g ...

  9. java类对象转化成字符串_String类型字符串(xml格式)转换成java对象类型

    使用到的包: 1. 2. 将字符串类型的字符串转换成的Java的对象时,需要先将字符的格式转换成JSON格式的字符串(所以用到了json.jar包),在使用JSON格式的字符串转换成的Java的对象类 ...

最新文章

  1. IBatis初体验2
  2. access创建窗体特别慢_64位Access运行速度很慢的解决办法
  3. 初始化JQuery方法与(function(){})(para)匿名方法介绍
  4. jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第1部分
  5. Nodejs - 如何用 eventproxy 模块控制并发
  6. 第五章 创建高性能的索引
  7. AS3开发必须掌握的内容
  8. 云场景实践研究第46期:吉利汽车
  9. lizbaka的周记
  10. 如何查看自己已连接WiFi的密码
  11. 【数据结构】线性表之单向链表的八大基操
  12. iOS学习笔记12—听筒和扬声器的转换
  13. 如何快速提升 Flutter App 中的动画性能
  14. 在页面点击“生成二维码”,直接把二维码图片下载下来
  15. PLC单片机实验开发设备
  16. 《深度学习入门 基于Python的理论与实现》书中代码笔记
  17. CAP定理,分布式系统
  18. MacOs “无法打开***,因为无法验证开发者...”
  19. 怎样快速提取视频中的音频文件?
  20. Centos7搭建Squid代理服务器

热门文章

  1. 深入理解物联网三大难点:(一)业务需求
  2. one day网页重构
  3. 使用 C++11 智能指针时要避开的 10 大错误
  4. 无线局域网为什么不用CSMA/CD而用CSMA/CA协议
  5. 做刷脸项目找靠谱的刷脸支付服务商合作
  6. opencv安装-3.4.6(+opencv_contrib;环境:ubuntu1604-NVIDIA-已装cuda)
  7. 利用阿里指数分析平台 分析网民采购情况
  8. springcloud入门[宏观认识]
  9. PPT——字体排版完善(加纹理)
  10. 40套PSD欧美扁平化网页模板,可二次编辑开发,精品