今天想查看一个数据集的标注情况时出现了如下错误:

点击打开原xml文件发现与精灵助手导出的xml文件格式是有一定差别的,就想将原格式文件做一个批量转换。代码如下所示:

# _*_encoding:utf-8_*_import os, sys
import glob
from PIL import Image
import xml.etree.ElementTree as ET
import numpy as npclasses = ['person', 'hat']  # 类别def convert_annotation(voc_path, image_id):print(f"已转换:{image_id}")in_file = open(voc_path + '/%s.xml' % (image_id), 'rb')# 解析xml文件tree = ET.parse(in_file)# 获得对应的键值对root = tree.getroot()bbox = []           # 初始化cls_id = []for obj in root.iter('object'):# 获得difficultdifficult = obj.find('difficult').text# 获得类别 =string 类型cls = obj.find('name').text# 通过类别名称找到idcls_id.append(classes.index(cls))# 找到bndbox 对象xmlbox = obj.find('bndbox')# 获取对应的bndbox的数组 = ['xmin','xmax','ymin','ymax']bbox.append([xmlbox.find('xmin').text, xmlbox.find('ymin').text, xmlbox.find('xmax').text, xmlbox.find('ymax').text])return bbox, cls_idsrc_img_dir = "data/VOC2028/JPEGImages"
src_txt_dir = r"data/VOC2028/Annotations"  # 源文件夹
src_xml_dir = r"data/VOC2028/convert_ann"  # 保存文件夹img_Lists = glob.glob(src_img_dir + '/*.jpg')img_basenames = []
for item in img_Lists:img_basenames.append(os.path.basename(item))img_names = []
for item in img_basenames:temp1, temp2 = os.path.splitext(item)img_names.append(temp1)for img in img_names:img_path = src_img_dir + '\\' + img + '.jpg'im = Image.open(img_path)width, height = im.sizegt, cls_id = convert_annotation(src_txt_dir, img)xml_file = open((src_xml_dir + '/' + img + '.xml'), 'w')xml_file.write('<?xml version="1.0" ?>\n')xml_file.write('<doc>\n')xml_file.write(f'<folder>{src_img_dir}]</folder>\n')xml_file.write(f'<filename>{img}.jpg</filename>\n')xml_file.write('    <path>' + img_path + '</path>\n')xml_file.write('    <outputs>\n')xml_file.write('        <object>\n')count = 0for spt in gt:xml_file.write('            <item>\n')xml_file.write(f'                <name>{classes[int(cls_id[count])]}</name>\n')xml_file.write('                <bndbox>\n')xml_file.write('                    <xmin>' + spt[0] + '</xmin>\n')xml_file.write('                    <ymin>' + spt[1] + '</ymin>\n')xml_file.write('                    <xmax>' + spt[2] + '</xmax>\n')xml_file.write('                    <ymax>' + spt[3] + '</ymax>\n')xml_file.write('                </bndbox>\n')xml_file.write('            </item>\n')count += 1xml_file.write('        </object>\n')xml_file.write('    </outputs>\n')xml_file.write('    <labeled>true</labeled>\n')xml_file.write('    <size>\n')xml_file.write('        <width>' + str(width) + '</width>\n')xml_file.write('        <height>' + str(height) + '</height>\n')xml_file.write('        <depth>3</depth>\n')xml_file.write('    </size>\n')xml_file.write('</doc>')

其中要修改的地方一个是classes列表,改为自己分类的名称就好了;另外要修改的是你原xml文件和转换格式后的xml文件保存的文件夹。最后转换效果如下所示,种类和位置都能够显示出来了:

(ps:我也不知道为什么就总有十张图无法完成导入,但是xml文件是全部完成转换了的,求大佬告知)

解决精灵标注助手暂不支持导入pascal文件相关推荐

  1. 精灵标注助手导入xml数据

    Yolo_mark工具界面使用不是很方便,常用的精灵标注助手不支持导入PASCAL VOC的标注文件,转换xml文件,一键导入,查看or修改标注信息. import os, sys import gl ...

  2. 精灵标注助手(Colabeler)使用教程

    现在人工智能领域需要标注好的数据情况很多,无论是图片,视频还是文本:无论是分类问题还是物体识别问题都需要标注,今天介绍一个比较好用的小工具-精灵标注助手(colabeler) 首先官网下载-精灵标注助 ...

  3. VOC/YOLO/COCO数据集格式转换及LabelImg/Labelme/精灵标注助手Colabeler标注工具介绍

    数据集格式:VOC(xml).YOLO(txt).COCO(json) 本文主要对Label格式,以及LabelImg.Labelme.精灵标注助手Colabeler这常用的三种数据标注软件进行介绍. ...

  4. 如何用精灵标注助手(Colabeler)标注视频跟踪

    我们在用深度学习做监控和识别时,经常需要对视频内容进行标注,比如对于一个行进中的汽车标注一路上的位置. 以前我们需要做这类标注的时候,能用到的工具是MIT开源的一个项目vatic,但是一方面这个项目功 ...

  5. 【深度学习样本准备系列】——标注工具:精灵标注助手(Colabeler)使用教程

    这篇文章是看到其他博主 https://blog.csdn.net/youmumzcs/article/details/79657132 推荐的,个人感觉不错,比自己编译的界面看上去要舒服,推荐下: ...

  6. 使用精灵标注助手制作yolov3训练数据集(附解析xml代码)

    一.标注数据 1.将获取图片存放到同一个文件夹下 本次标注数据供分为4类(person,dog,tiger,car),由于数据较少所以放在一个文件夹,数据较多时可以选择存放在多个文件夹 2.打开精灵标 ...

  7. 【xml】【精灵标注助手】【标签读取与重写】

    顶部位置 具体内容 精灵标注助手的标注结果 code: 将精灵标注结果改为voc格式标注结果 改写后的xml文件内容 内容4 内容5 内容6 1. 精灵标注助手的标注结果 返回顶部 <?xml ...

  8. 使用精灵标注助手生成json文件

    使用精灵助手教程 本文主要介绍如何使用精灵标注助手生成json文件 下载精灵标注助手 下载链接:http://www.jinglingbiaozhu.com/ 选择windows版本进行下载. 安装方 ...

  9. Yolov5 使用精灵标注助手制作数据集

    精灵标记助手下载:http://www.jinglingbiaozhu.com/ 首先点击菜单文件->新建,然后选择位置标注,选择图片文件夹,点击创建按钮,软件会自动加载文件夹下的图片(png, ...

最新文章

  1. 今日宇宙最热科技:人工智能可预测死亡时间,马斯克拿下美空军1.3亿合同!...
  2. 移动隐藏邮箱并删除默认邮箱数据库
  3. php视频生成指定帧图片,python3.5 cv2 获取视频特定帧生成jpg图片
  4. Exception.InnerException 属性的使用
  5. java for index_Java IBarDataSet.getEntryForIndex方法代码示例
  6. C# 编译后执行bat等脚本文件 运行脚本文件 执行Copy 执行XCopy
  7. 门窗计算机公式,门窗天使软件怎么编辑公式 公式输入方法
  8. 计算机操作系统(第四版)课后习题答案(完整版)---汤小丹 梁红兵 哲凤屏 汤子瀛 版本
  9. 编程模拟高尔顿钉板(正态分布)C++
  10. 涉及欧拉常数的一道数学题
  11. 手把手教你搭建DHCP服务器
  12. win7未能成功安装驱动服务器,ghost win7未能成功安装设备驱动程序怎么办解决方法...
  13. 华为 荣耀 6x android哪个版本,华为荣耀畅玩6X官方rom刷机包_华为荣耀6X原版系统包_升级包...
  14. 【20210401】用Python的turtle库绘制呲牙表情包
  15. 一篇文章搞懂 HDFS ACLs权限管理
  16. python入门容器-列表ListDay05
  17. easyui支持ie8浏览器
  18. springboot+poi开发excel导出 加载Excel模板导出 Excel批量导出详解
  19. JAVA远程连接ssh异步,SSH-2实现java连接远程服务器并执行脚本命令
  20. 计算机的标准输入法,计算机操作系统标准教程 第4章 五笔字型输入法.pdf

热门文章

  1. 大家能不能在百忙之中 想想鸟姐的话
  2. 什么样的网站才可以算得上是高端网站设计
  3. Java修仙,法力无边(光速回顾Java基础~)
  4. 网站备案后一定要做的一件事【否则罚款5千元~1万元】
  5. fastjson基本使用
  6. 2013上半年 系统集成项目管理工程师 下午试卷
  7. java从学号中提取班级_如何实现表间查询并提取班级号
  8. 微信小程序:Framework inner error FLOW_CREATE_NODE
  9. microsoft edge 浏览器添加兼容网址
  10. MySQL数据库的存储引擎