当前位置:网站首页>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
四、结果如下:
边栏推荐
猜你喜欢
什么是数字孪生智慧城市应用场景
网络工程师入门必懂华为认证体系,附系统学习路线分享
复现20字符短域名绕过
This Thursday evening at 19:00, the fourth live broadcast of knowledge empowerment丨The realization of equipment control of OpenHarmony smart home project
7-3 LVS+Keepalived集群叙述与部署
看DevExpress丰富图表样式,如何为基金公司业务创新赋能
The video of machine learning to learn [update]
[Ryerson emotional speaking/singing audiovisual dataset (RAVDESS)]
PL/SQL Some Advanced Fundamental
Reproduce 20-character short domain name bypass
随机推荐
Embedded database development programming MySQL (full)
【MD5】采用MD5+盐的加密方式完成注册用户和登录账号
JVM的内存模型简介
数组相关 内容 解析
拿捏JVM性能优化(自己笔记版本)
unity框架之缓存池
Basic characteristics of TL431 and oscillator circuit
八年软件测试工程师带你了解-测试岗进阶之路
7-2 LVS+DR概述与部署
6口全千兆二层网管型工业以太网交换机千兆2光4电光纤自愈ERPS环网交换机
base address: environment variable
Use serve to build a local server
8.Haproxy 搭建Web集群
How to automatically export or capture abnormal login ip and logs in elastic to the database?
Postgresql source code (66) insert on conflict grammar introduction and kernel execution process analysis
中信证券网上开户怎么开的?安全吗?
How to systematically plan and learn software testing?
How class only static allocation and dynamic allocation
劝退背后。
Tensors - Application Cases