当前位置:网站首页>Converts XML tags to TXT format (voc conversion for yolo convenient training)
Converts XML tags to TXT format (voc conversion for yolo convenient training)
2022-08-04 04:15:00 【The wind blows the fallen leaves and flowers】
将xml标签转换为txt(voc格式转换为yolo方便进行训练)
文章目录
一、前言
After retrieving someone else's,It doesn't feel as good as mine,Contribute your own code
二、程序
import xml.etree.ElementTree as ET
import os
from os import listdir, getcwd
classes = ["bed", "water horse bucket"] # Change your label
def convert(size, box):
dw = 1.0 / size[0]
dh = 1.0 / size[1]
x = (box[0] + box[1]) / 2.0
y = (box[2] + box[3]) / 2.0
w = box[1] - box[0]
h = box[3] - box[2]
x = x * dw
w = w * dw
y = y * dh
h = h * dh
return (x, y, w, h)
def convert_annotation(image_name,labelPath):
# in_file = open(os.path.join(labelPath,image_name[:-3] + 'xml')) # xml文件路径
out_file = open(os.path.join(labelPath+'TXT',image_name[:-3] + 'txt'), 'w') # 转换后的txt文件存放路径
in_file = open(os.path.join(labelPath,image_name[:-3] + 'xml')) # xml文件路径
xml_text = in_file.read()
root = ET.fromstring(xml_text)
in_file.close()
size = root.find('size')
w = int(size.find('width').text)
h = int(size.find('height').text)
# print(root.iter('object'))
for obj in root.iter('object'):
cls = obj.find('name').text
if cls not in classes:
print(cls)
continue
cls_id = classes.index(cls)
xmlbox = obj.find('bndbox')
b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),
float(xmlbox.find('ymax').text))
bb = convert((w, h), b)
#print(bb)
out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')
wd = getcwd()
if __name__ == '__main__':
imgNmae=input('Enter the absolute address of the image folder:')
labelPath=input('输入xmlThe absolute address of the marked folder:')
#imgNmae='E:\数据集\新建文件夹//bed//bed\data\img'
#labelPath='E:\数据集\新建文件夹//bed/bed\data\labels'
if not os.path.isdir(labelPath+'TXT'):
os.mkdir(labelPath+'TXT')
for image_path in os.listdir(imgNmae): # 每一张图片都对应一个xml文件这里写xml对应的图片的路径
#image_name = image_path.split('\\')[-1]
print(image_path)
convert_annotation(image_path,labelPath)
三、Run through the demo
1、修改classesfor your datasetclasses

2、运行:Enter the absolute address of the image and annotation folder

四、结果如下:

边栏推荐
- 7-1 LVS+NAT 负载均衡群集,NAT模式部署
- 基本表单验证流程
- SQL injection in #, - +, - % 20, % 23 is what mean?
- 【21天学习挑战赛】顺序查找
- 深度学习——以CNN服装图像分类为例,探讨怎样评价神经网络模型
- 【MD5】采用MD5+盐的加密方式完成注册用户和登录账号
- 初识Numpy
- 哎,又跟HR在小群吵了一架!
- Hey, I had another fight with HR in the small group!
- A Preliminary Study of RSS Subscription to WeChat Official Account-feed43
猜你喜欢

转:管理是对可能性的热爱,管理者要有闯进未知的勇气

哎,又跟HR在小群吵了一架!

Reproduce 20-character short domain name bypass

sql语句查询String类型字段小于10的怎么查

自定义通用分页标签02

pnpm 是凭什么对 npm 和 yarn 降维打击的

Gigabit 2 X light 8 electricity management industrial Ethernet switches WEB management - a key Ring Ring net switch

目标检测-中篇

MySQL查询优化与调优

企业直播风起:目睹聚焦产品,微赞拥抱生态
随机推荐
MySQL query optimization and tuning
【技巧】借助Sentinel实现请求的优先处理
内网服务器访问远程服务器的端口映射
类如何只能静态分配和只能动态分配
TL431的基本特性以及振荡电路
sql语句查询String类型字段小于10的怎么查
元宇宙“吹鼓手”Unity:疯狂扩局,悬念犹存
千兆2光8电管理型工业以太网交换机WEB管理X-Ring一键环网交换机
[Ryerson emotional speaking/singing audiovisual dataset (RAVDESS)]
4路双向HDMI综合业务高清视频光端机8路HDMI高清视频光端机
一文详解DHCP原理及配置
Introduction to the memory model of the JVM
How to systematically plan and learn software testing?
软件测试如何系统规划学习呢?
初识Numpy
打造一份优雅的简历
复现20字符短域名绕过
if,case,for,while
张量篇-应用案例
This Thursday evening at 19:00, the fourth live broadcast of knowledge empowerment丨The realization of equipment control of OpenHarmony smart home project