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

四、结果如下:

边栏推荐
猜你喜欢
随机推荐
力扣(LeetCode)215. 数组中的第K个最大元素(2022.08.03)
2022年软件测试——精选金融银行面试真题
嵌入式数据库开发编程MySQL(全)
Power button (LeetCode) 215. The first K largest elements in the array (2022.08.03)
8.Haproxy 搭建Web集群
Learn iframes and use them to solve cross-domain problems
4路双向HDMI综合业务高清视频光端机8路HDMI高清视频光端机
备份工具pg_dump的使用《postgres》
转:管理是对可能性的热爱,管理者要有闯进未知的勇气
Mockito unit testing
类如何只能静态分配和只能动态分配
学会iframe并用其解决跨域问题
How to systematically plan and learn software testing?
FFmpeg —— 录制麦克风声音(附源码)
FFmpeg —— 通过修改yuv,将视频转为黑白并输出(附源码)
【机器学习】21天挑战赛学习笔记(一)
Reproduce 20-character short domain name bypass
Shell 函数
7-2 LVS+DR Overview and Deployment
JVM笔记







