首页 > 其他分享 >xml2yolo脚本

xml2yolo脚本

时间:2023-08-06 15:23:01浏览次数:36  
标签:脚本 box name text image xml2yolo find size

xml2yolo脚本

  • yolo所对应的格式是.txt,其中包含框的类别索引,中心点坐标,boundingboxs的宽,高。
import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join
import glob

classes = ["crazing", "inclusion", "patches", "pitted_surface", "rolled-in_scale", "scratches"]

def convert(size, box):
    dw = 1./size[0]
    dh = 1./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):
    in_file = open('./ANNOTATIONS/'+image_name[:-3]+'xml')#读入每张图片对应的.xml
    out_file = open('./LABELS/'+image_name[:-3]+'txt','w')
    tree=ET.parse(in_file)
    root = tree.getroot()
    size = root.find('size')
    w = int(size.find('width').text)
    h = int(size.find('height').text)

    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)
        out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')#把名字和bbx写入到.txt文件

wd = getcwd()

if __name__ == '__main__':
    for image_path in glob.glob("./IMAGES/*.jpg"):#读入图像数据名
        image_name = image_path.split('\\')[-1]#只取名字后缀
        #print(image_path)
        convert_annotation(image_name)#转换标签

标签:脚本,box,name,text,image,xml2yolo,find,size
From: https://www.cnblogs.com/lushuang55/p/17609450.html

相关文章

  • 我写了一个shell脚本然后加密了
    原文链接:我写了一个shell脚本然后加密了hello,大家晚上好啊,今天为大家带来一个小工具--shc。shc是一个可以用来对shell脚本进行加密的工具,它操作起来很方便,它的作用是将我们编写的shell脚本可以转换为一个可执行的二进制文件,起到加密的作用,当然,GitHub上也有很多的工具用来解析shc生......
  • post时间盲注注入脚本之查询表字段数--草稿
    importrequestsimportsysimporttimeimportpdbimportthreadingfromconcurrent.futuresimportThreadPoolExecutorclassInjection():def__init__(self):self.url=""#self.scheNum=0self.scheNum=7#sel......
  • .git泄露利用脚本工具githack使用
    前言首先我们要明白git(一种分布式版本管理工具),它适用于我们多人协作开发,我们每个人对开发项目进行了修改git都会记录并产生快照也就是我们所谓的版本,我们可以很方便的查看甚至是回溯到我们之前的版本(也许我们在开发过程中会出现许多的不可控事故)但前提是我们不能删除.git文......
  • Docker-Compose 一键部署mysql及初始化sql脚本
    1.部署前提:服务器具备docker和docker-compose环境2.镜像准备:-mysql:DockerFile文件:FROMmysql:5.7.41COPY*.sql/docker-entrypoint-initdb.d/初始化sql脚本xxx.sql放在DockerFile文件同级目录下执行指令:dockerbuild-fdockerfile_mysql-tmysql:1.0.0.......
  • shell 脚本:nginx jdk maven node-exporter docker-ce
     写一个脚本,本地自带nginx1.24源码包,然后自动完成安装,并加入system管理。并设置开启自启动,并启动ng。并完成对80端口的curl测试,返回状态码200打印启动正常的消息:#!/bin/bash#安装依赖sudoapt-getupdatesudoapt-getinstall-ybuild-essentialwgetcurl#下载并解......
  • 一键获取测试脚本,轻松验证 TDengine 3.0 IoT 场景下 TSBS 测试报告
    不久前,基于TSBS,我们发布了TDengine3.0测试报告系列第一期——《DevOps场景下TDengine3.0对比测试报告》,报告验证了TDengine基于时序数据场景所设计的独特架构,在DevOps场景下带来的性能优势以及成本控制水平。本期我们继续探寻在IoT场景下,TDengine对比TimescaleDB、......
  • SSL 证书过期巡检脚本 (Python 版)
    哈喽大家好,我是咸鱼之前写了个shell版本的SSL证书过期巡检脚本(文章:《SSL证书过期巡检脚本》),后台反响还是很不错的那么今天咸鱼给大家介绍一下python版本的SSL证书过期巡检脚本(完整代码在文末)思路导入相关模块importsslimportsocketimporttimefromdatetime......
  • Python 将playwright 脚本打包exe
    1、需要将playwright版本下载,注意:如果不想执行exe出现cmd弹窗,则需要将playwright版本安装为1.29.0。参考:https://blog.csdn.net/tdl320721/article/details/1287372732、下载playwright对应的浏览器驱动,playwrightinstallchrome3、查看python环境目录内的  \Lib\site-......
  • linux根据地址添加出站策略--脚本
    文件名称:add_policy.sh内容:#!/bin/bashmain(){num=1echo"<?xmlversion="1.0"encoding="utf-8"?><direct></direct>">direct.xml#read-p"请输入文件全路径名称:"ip_addrwhilereadlinedo......
  • [8月摸鱼计划]无法将“ssh”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
    无法将“ssh”项识别为cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次gitee生成自己的公钥之后,运行ssh-T [email protected]检测是否成功却说没办法识别ssh遇到了类似的问题在powershell会这样。所以我直接到gitbash里面去敲......