rolabelimg标定数据xml文件转为yolo可用txt

本文介绍如何使用Python将图像标定数据从XML格式转换为适用于Yolo模型训练的TXT格式,详细解析了转换过程并提供了相关代码示例。
部署运行你感兴趣的模型镜像
# coding=utf-8

import os
import xml.dom.minidom
import cv2 as cv


def xml_to_txt(indir, outdir):
    os.chdir(indir)
    xmls = os.listdir('.')
    for i, file in enumerate(xmls):
        file_save = file.split('.')[0] + '.txt'
        file_txt = os.path.join(outdir, file_save)
        f_w = open(file_txt, 'w')
        # actual parsing
        DOMTree = xml.dom.minidom.parse(file)
        annotation = DOMTree.documentElement
        filename = annotation.getElementsByTagName("path")[0]
        imgname = filename.childNodes[0].data
        img_temp = imgname.split('\\')[-1]
        img_temp = os.path.join(image_dir, img_temp)
        image = cv.imread(imgname)
#        cv.imwrite(img_temp, image)
        objects = annotation.getElementsByTagName("object")
        print(file)
        for object in objects:
            bbox = object.getElementsByTagName("robndbox")[0]
            cx = bbox.getElementsByTagName("cx")[0]
            x = float(cx.childNodes[0].data)
            print(x)
            cy = bbox.getElementsByTagName("cy")[0]
            y = float(cy.childNodes[0].data)
            print(y)
            cw = bbox.getElementsByTagName("w")[0]
            w = float(cw.childNodes[0].data)
            print(w)
            ch = bbox.getElementsByTagName("h")[0]
            h = float(ch.childNodes[0].data)
            print(h)
            cangel = bbox.getElementsByTagName("angle")[0]
            angle = float(cangel.childNodes[0].data)
            print(angle)
            cname = object.getElementsByTagName("name")[0]
            name = cname.childNodes[0].data
            print(name)
            x1 = x - w / 2.
            y1 = y - h / 2.
            x2 = x + w / 2.
            y2 = y - h / 2.
            x3 = x + w / 2.
            y3 = y + h / 2.
            x4 = x - w / 2.
            y4 = y + h / 2.
            temp = str(x1) + ' ' + str(y1) + ' ' + str(x2) + ' ' + str(y2) + ' ' + str(x3) + ' ' + str(y3) + ' ' + str(
                x4) + ' ' + str(y4) + ' ' + name + '\n'
            f_w.write(temp)
        f_w.close()


image_dir = 'F:\yolov5-master\data\images'   #img目录
indir = 'F:\yolov5-master\data\Annotations'  # xml目录
outdir = 'F:\yolov5-master\data\labels'  # txt目录
xml_to_txt(indir, ou

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值