xml转化为txt数据的脚本,为yolo提供训练
这里写自定义目录标题
- xml转化为txt数据的脚本
xml转化为txt数据的脚本
代码如下:
import xml.etree.ElementTree as ET
import os, cv2
import numpy as np
from os import listdir
from os.path import joinclasses = []def convert(size, box):dw = 1. / (size[0])dh = 1. / (size[1])x = (box[0] + box[1]) / 2.0 - 1y = (box[2] + box[3]) / 2.0 - 1w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn (x, y, w, h)def convert_annotation(xmlpath, xmlname):with open(xmlpath, "r", encoding='utf-8') as in_file:txtname = xmlname[:-4] + '.txt'txtfile = os.path.join(txtpath, txtname)tree = ET.parse(in_file)root = tree.getroot()filename = root.find('filename')img = cv2.imdecode(np.fromfile('{}/{}.{}'.format(imgpath, xmlname[:-4], postfix), np.uint8), cv2.IMREAD_COLOR)h, w = img.shape[:2]res = []for obj in root.iter('object'):cls = obj.find('name').textif cls not in classes:classes.append(cls)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)res.append(str(cls_id) + " " + " ".join([str(a) for a in bb]))if len(res) != 0:with open(txtfile, 'w+') as f:f.write('\n'.join(res))if __name__ == "__main__":postfix = 'jpg'imgpath = 'JPEGImages_Val'xmlpath = 'Annotations_Val'txtpath = 'labels_Val'if not os.path.exists(txtpath):os.makedirs(txtpath, exist_ok=True)list = os.listdir(xmlpath)error_file_list = []for i in range(0, len(list)):try:path = os.path.join(xmlpath, list[i])if ('.xml' in path) or ('.XML' in path):convert_annotation(path, list[i])print(f'file {list[i]} convert success.')else:print(f'file {list[i]} is not xml format.')except Exception as e:print(f'file {list[i]} convert error.')print(f'error message:\n{e}')error_file_list.append(list[i])print(f'this file convert failure\n{error_file_list}')print(f'Dataset Classes:{classes}')
相关文章:
xml转化为txt数据的脚本,为yolo提供训练
这里写自定义目录标题 xml转化为txt数据的脚本 xml转化为txt数据的脚本 代码如下: import xml.etree.ElementTree as ET import os, cv2 import numpy as np from os import listdir from os.path import joinclasses []def convert(size, box):dw 1. / (size[0…...
【H5页面嵌入到小程序或APP中实现手机号点击复制和拨号功能】
在H5界面嵌入到小程序和移动应用(安卓和iOS)中实现手指点击手机号弹出弹窗,包含呼叫和复制选项,是可以实现的。下面我将为你提供一个基本的示例,并解释在小程序、安卓和iOS中要做的支持工作。 <!DOCTYPE html> …...
Kubernetes技术--k8s核心技术 configMap
1.概述 configMap最主要的作用是存储一些不加密的数据到/etcd,让pod以变量或者数据卷(volume)挂载到容器。 应用场景:配置文件、存储信息等 2.使用 -1.创建配置文件。 这里我们需要先编写一个配置文件。使用redis,如下所示:...
Springboot动态修改日志级别
在开发和运维过程中,我们经常需要调整日志级别来查看不同级别的日志信息。传统的做法是修改配置文件,然后重启应用程序。但是,在分布式系统中,重启应用程序可能比较麻烦,而且也影响了业务的正常运行。 Springboot提供…...
新手将最简单的springboot部署上tomcat出现的意外问题
现阶段springboot部署到tomcat的文章一抓一大把且都相同,便贴一个地址以展示流程: SpringBoot打war包部署Tomcat(最全)_spring boot war 部署tomcat_聊Java的博客-CSDN博客 那么就说一下我出现的问题: 在完整复现流程且确认代码无误的情况下,部署到tomcat,此时问题出现了:启动…...
P1177 【模板】排序(Sort排序)
题目描述 将读入的 N N N 个数从小到大排序后输出。 输入格式 第一行为一个正整数 N N N。 第二行包含 N N N 个空格隔开的正整数 a i a_i ai,为你需要进行排序的数。 输出格式 将给定的 N N N 个数从小到大输出,数之间空格隔开,…...
软件测试(黑盒测试、白盒测试、灰盒测试)
软件测试方法大类上分为黑盒测试、白盒测试和灰盒测试三种 一、黑盒测试 黑盒测试通俗来说即不知道代码是怎么写的。具体实现逻辑,基于代码输入有哪些应该输出什么进行测试的方法。其方法有:基于直觉和经验的方法(IEBT)、基于需…...
昨天面试的时候被提问到的问题集合。
1、vue的双向绑定原理是什么?里面的关键点在哪里? 2、实现水平垂直居中的方式? 3、常用伪元素有哪一些? 4、移动端如何适配不同屏幕尺寸? 5、本地存储有哪一些?他们三者有什么区别? 6、JS的数据…...
广电运营商三网融合监控运维方案
随着三网融合逐步发展、深化,广电网络从为用户提供原本单一的信息服务转向了集语音、文字、图像为一体的信息服务,同时也实现了由单一独立的网络向综合性网络的改变。如何在业务的融合与竞争中创造核心竞争力,利用自身网络覆盖率上的优势&…...
数据库锁简析
数据库大并发操作要考虑死锁和锁的性能问题。用T1代表一个数据库执行请求,T2代表另一个请求,也可以理解为T1为一个线程,T2 为另一个线程。T3,T4以此类推。下面以SQL Server为例。 锁的种类 共享锁(Shared lock) 例1:T1: select…...
说说广播流与普通流
分析&回答 user actions 可以看作是事件流(普通流)patterns 为广播流,把全量数据加载到不同的计算节点。 广播流 Broadcast是一份存储在TaskManager内存中的只读的缓存数据在执行job的过程中需要反复使用的数据,为了达到数据共享&am…...
内卷的本质和大数据在计量经济学领域的运用思考
内卷的本质和大数据在计量经济学领域的运用思考 今天我们来思考两个问题: 当下经济的困局在哪里?为何内卷越来越严重?内卷的本质是什么?为何会出现内卷?市场经济运行的底层逻辑是什么?西方经济学理论的指导…...
毕业设计-摄像头识别二维码
本毕业设计采用imx6ull-linux4.1.15-qt5.6开发板进行测试 相关交叉编译包和摄像头测试程序已上传:https://download.csdn.net/download/qq_42952079/88282608 将zbar和opencv下的lib库文件拷贝到开发板的lib目录下,将camera可执行文件拷贝到开发板目录下…...
封装动态表单组件
技术栈:vue2 js webpack 需求: 利用数据渲染表单,实现代码的精简化及效率的提升。 效果图: 封装的组件: <div v-if"formConfig"><el-formv-bind"$attrs"ref"formDom":model…...
提高Python并发性能 - asyncio/aiohttp介绍
在进行大规模数据采集时,如何提高Python爬虫的并发性能是一个关键问题。本文将向您介绍使用asyncio和aiohttp库实现异步网络请求的方法,并通过具体结果和结论展示它们对于优化爬虫效率所带来的效果。 1. 什么是异步编程? 异步编程是一种非阻…...
网络性能的四大指标:带宽、时延、抖动、丢包
原文链接:https://www.eet-china.com/mp/a82420.html 怎么去描述网络性能的好坏? 你如果说这个网络很好,那里的网络有点差!这无异于看这风景美如画,本想吟诗赠天下,怎奈自己没文化,只能卧槽浪好大。 我们得用专业的术语去描述它…...
MySQL高阶查询语句
目录 一、常用查询 1、按关键字排序 1.1 升序排序 1.2 降序排序 1.3 结合where进项条件过滤再排序 1.4 多条件排序 2、区间判断及查询不重复记录 2.1 and/or(且/或) 2.2 嵌套 /多条件 2.3 distinct 查询不重复记录 3、对结果进行分组 4、限…...
未来科技城携手加速科技 共建集成电路测试公共服务平台!
8月26日,2023未来产业发展大会在杭州未来科技城国际会议中心开幕!会上,发布了未来科技城培育发展未来产业行动计划,启动了未来产业发展共同体,进行了未来产业公共服务平台签约仪式。未来科技城与加速科技签约共建集成电…...
渗透测试漏洞原理之---【失效的访问控制】
文章目录 1、失效的访问控制1.1、OWASP Top 101.1.1、A5:2017-Broken Access Control1.1.2、A01:2021 – Broken Access Control 1.2、失效的访问控制类别1.2.1、水平越权1.2.2、垂直越权 1.3、攻防案例1.3.1、Pikachu靶场 Over Permision1.3.2、DVWA越权利用失效的访问控制漏洞…...
opencv的使用(Ubuntu linux环境,AS jni,AS java)
最近要完成一个功能,就是把四个视频合成左右上下分布的一个视频。尝试很多方法,最终使用opencv来实现该功能。(通过opencv实现的视频好像没有声音。)研究的步骤,首先在Ubuntu环境测试,该功能是否实现。然后再将生成的库文件放到AS中,使用jni的方法调用,或者将源码放到A…...
如何解决bilibili-api中BV号与AV号转换的技术难题?
如何解决bilibili-api中BV号与AV号转换的技术难题? 【免费下载链接】bilibili-api 哔哩哔哩常用API调用。支持视频、番剧、用户、频道、音频等功能。原仓库地址:https://github.com/MoyuScript/bilibili-api 项目地址: https://gitcode.com/gh_mirrors…...
Linux内核核心机制与开发实践详解
1. Linux内核概述与预备知识Linux内核作为操作系统的核心组件,承担着管理硬件资源、提供系统服务的关键角色。要深入理解Linux内核,需要具备以下基础知识储备:C语言能力:内核代码90%以上由C语言编写,需掌握指针操作、内…...
避开这5个坑!MES工艺路线管理中的常见错误及解决方案
避开这5个坑!MES工艺路线管理中的常见错误及解决方案 在制造业数字化转型的浪潮中,MES(制造执行系统)已成为提升生产效率的关键工具。然而,许多企业在实施工艺路线管理模块时,常常陷入一些看似简单却影响深…...
保姆级图解:ARM CHI协议里的Credit机制,到底是怎么防止芯片“堵车”的?
ARM CHI协议中的Credit机制:芯片互连的智能交通控制系统 想象一下早高峰时段的城市交通——如果没有红绿灯和匝道流量控制,整个道路系统将在几分钟内陷入瘫痪。类似地,在现代多核处理器和芯片间互连架构中,Credit机制正是扮演着这…...
突破语言壁垒:FigmaCN开源插件让设计界面全中文呈现
突破语言壁垒:FigmaCN开源插件让设计界面全中文呈现 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 作为一名设计师,你是否也曾在使用Figma时因全英文界面而频繁…...
Figma全中文界面解决方案:从安装到精通的实战指南
Figma全中文界面解决方案:从安装到精通的实战指南 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 作为一名中文设计师,你是否曾因Figma全英文界面而在操作时频繁…...
Qwen3-14B RTX 4090D专用镜像详解:FlashAttention-2+vLLM推理加速实操
Qwen3-14B RTX 4090D专用镜像详解:FlashAttention-2vLLM推理加速实操 1. 镜像概述与核心优势 Qwen3-14B RTX 4090D专用镜像是专为高性能AI推理场景打造的私有化部署解决方案。这个镜像最大的特点就是"开箱即用"——所有环境依赖、模型权重、优化组件都已…...
3种架构级解决方案实现HTML到Figma的设计转代码自动化
3种架构级解决方案实现HTML到Figma的设计转代码自动化 【免费下载链接】figma-html Convert any website to editable Figma designs 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html 在现代前端开发工作流中,设计稿与代码实现之间的鸿沟已成为影响…...
告别视图切换混乱:用快马平台和cc-switch提升前端开发效率
告别视图切换混乱:用快马平台和cc-switch提升前端开发效率 最近在开发一个需要多工作模式切换的项目时,遇到了视图管理混乱的问题。不同模式下的UI组件互相干扰,状态管理变得异常复杂。经过一番摸索,我发现cc-switch这个方案能很…...
基于CIEDE2000标准的AI图像分层技术:从像素聚类到设计效率革命
基于CIEDE2000标准的AI图像分层技术:从像素聚类到设计效率革命 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 在数字设计领域,将…...
