当前位置:网站首页>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

四、结果如下:

边栏推荐
猜你喜欢

2 Gigabit Optical + 6 Gigabit Electric Rail Type Managed Industrial Ethernet Switch Supports X-Ring Redundant Ring One-key Ring Switch

Basic form validation process

自定义通用分页标签02

千兆2光8电管理型工业以太网交换机WEB管理X-Ring一键环网交换机
![The video of machine learning to learn [update]](/img/e7/c9a17b4816ce8d4b0787c451520ac3.png)
The video of machine learning to learn [update]

Stop behind.

SQL interview Questions

MySQL query optimization and tuning

Basic characteristics of TL431 and oscillator circuit

帮助企业实现数字化转型成功的八项指导原则
随机推荐
4-way two-way HDMI integrated business high-definition video optical transceiver 8-way HDMI high-definition video optical transceiver
汇编语言之栈
初识Numpy
Based on the statistical QDirStat Qt directory
Explain详解与实践
目标检测-中篇
缓存穿透、缓存击穿、缓存雪崩以及解决方案
drools from download to postman request success
A Preliminary Study of RSS Subscription to WeChat Official Account-feed43
"Introduction to nlp + actual combat: Chapter 8: Using Pytorch to realize handwritten digit recognition"
备份工具pg_dump的使用《postgres》
类如何只能静态分配和只能动态分配
机器学习之视频学习【更新】
Y86. Chapter iv Prometheus giant monitoring system and the actual combat, Prometheus storage (17)
【21天学习挑战赛】顺序查找
网络工程师入门必懂华为认证体系,附系统学习路线分享
7. The principle description of LVS load balancing cluster
杭电多校-Slipper-(树图转化+虚点建图)
2022年软件测试——精选金融银行面试真题
Basic form validation process