yolov5图像识别voc转yolo代码解析

news2024/11/17 15:51:15

https://github.com/ultralytics/JSON2YOLO
https://blog.csdn.net/qq_51831335/article/details/127237772
目标检测数据集标签转换COCO2VOC、YOLO2VOC、JSON2YOLO

<annotation>
	<folder>VOC2007</folder>
	<filename>000001.jpg</filename>
	<source>
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image>
		<flickrid>341012865</flickrid>
	</source>
	<owner>
		<flickrid>Fried Camels</flickrid>
		<name>Jinky the Fruit Bat</name>
	</owner>
	<size>
		<width>353</width>
		<height>500</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>dog</name>
		<pose>Left</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>48</xmin>
			<ymin>240</ymin>
			<xmax>195</xmax>
			<ymax>371</ymax>
		</bndbox>
	</object>
	<object>
		<name>person</name>
		<pose>Left</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>8</xmin>
			<ymin>12</ymin>
			<xmax>352</xmax>
			<ymax>498</ymax>
		</bndbox>
	</object>
</annotation>
#定义一个voc到yolo数据格式的转换代码
#voc的数据标定的时候给定的是:左上角,右下角的坐标(xmin/ymin/xmax/ymax)
#yolo数据标定的时候给定的是:中心点坐标,宽度,高度(x/y/w/h),并且是和原始图像width和height的百分比

import os
from xml.etree import ElementTree as ET
import tqdm

if __name__ == '__main__':
	label_2_id = {
	'plate':0
	}
	img_dir= “”
	voc_label_dir = ""
	yolo_label_dir = ""
	#读取所有voc_xml文件名称列表
	if not os.path.exists(yolo_label_dir):
		os.makedirs(yolo_label_dir):
			os.makedirs(yolo_label_dir)
	#遍历处理每个xml文件
	for voc_label_name in tqdm(voc_label_names):
		#1.解析xml文件
		tree = ET.parse(os.path.join(voc_label_dir,voc_label_name))
		#2.获取根节点的信息
		root = tree.getroot()
		#3.获取文件名称
		filename = root.find('filename').text
		#4.判断图像文件是是否存在
		img_file = os.path.join(img_dir,filename)
		if not os.path.exists(img_file)
			continue
		#5.将标注的box信息转换成yolo格式,然后保存到txt文件中
		#6.提取图像的大小
		size_obj = root.find('size')
		width = float(size_obj.find('width').text)
		height = float(size_obj.find('height').text)
		yolo_label_file = os.path.join(yolo_label_dir,f"{os.path.splitext(filename)[0]}.txt")
		with open(yolo_label_file,'w',encoding = 'UTF-8') as writer:
			for obj in root.findall('object'):
			  #提取标签名称
				label = obj.find('name').text
				#提取左上角,右下角坐标
				bbox = obj.find('bndbox')
				xmin = float(bbox.find('xmin').text)
				xmax = float(bbox.find('xmin').text)
				ymin = float(bbox.find('xmin').text)
				ymax = float(bbox.find('xmin').text)
				#转换成中心点坐标,宽度,高度
				w = xmax-xmin
				h = ymax -ymin
				x = xmin + w/2.0
				y = ymin + h/2.0
				#需要相对宽度和高度
				w = w/width
				h = h/height
				x = x/width
				y = y/height
				#输出
				writer.writelines(f"{label_2_id{label} {x} {y} {w} {h}\n}")
		#img_name = voc_label_name[:-3]
		#print(voc_label_names)
		

在这里插入图片描述在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/496978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

x265码控分析

D和R的关系 高分辨率量化 均匀量化&#xff1a;量化区间 ‘ Δ k y k − y k − 1 ‘ \Delta_ky_k-y_{k-1} ‘Δk​yk​−yk−1​‘&#xff0c;近似为常数&#xff1b;p(x)为信源概率密度函数&#xff0c;且 ‘ Δ k ‘ \Delta_k ‘Δk​‘的大小相对于p(x)的变化率充分小&…

【模拟IC学习笔记】 反馈

反馈的作用&#xff1a;增益灵敏度降低 采用开环的方式实现一个精确的增益比较困难&#xff0c;但是可以实现高增益。 增益灵敏度衍生出来的另外两个特点 1、增加系统带宽。 2、改变输出阻抗&#xff0c;提高驱动能力。 反馈的作用&#xff1a;增加带宽 带宽的增加来源于…

对传递函数的零极点、频率响应、稳定性的理解

对传递函数的零极点、频率响应、稳定性的理解 零极点 从传递函数求零极点 令传递函数分子为0求出零点&#xff0c;令分母为0求出零点。 频率响应 单极点系统的频率响应 A v A v d c ∗ ( 1 / ( 1 s R C ) ) AvAv_dc*(1/(1sRC)) AvAvd​c∗(1/(1sRC))&#xff0c;系统的极…

python通过SSH管道访问ClickHouse

目录 前言什么是跳板机什么是SSH协议SSH管道访问ClickHouse参考文献 前言 因为新业务需要&#xff0c;数据都存储在阿里云服务器的ClickHouse数据库里&#xff0c;最近想取点数探索一下&#xff0c;于是下载了客户端工具DBeaver并成功连接ClickHouse&#xff0c;然后想通过pyt…

【前端面试题】这些js功能你一定要学会

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 1.图片失败&#xff0c;重新加载 如果图片资源不存在&#xff0c;那可以设置图片失败的占位…

深度学习——A3C算法

A3C算法&#xff08;Asynchronous Advantage Actor-Critic&#xff09; DDPG算法之后&#xff0c;DeepMind对其改造&#xff0c;提出了效果更好的 Asynchronous Advantage Actor-Critic&#xff08;A3C&#xff09;算法&#xff08;论文是 Asynchronous Methods for Deep Rein…

【谷粒商城之远程调用和异步调用丢失请求头问题】

本笔记内容为尚硅谷谷粒商城远程调用和异步调用丢失请求头问题部分 目录 一、Feign远程调用丢失请求头 二、Feign异步调用丢失请求头问题 一、Feign远程调用丢失请求头 ​ ​ 问题&#xff1a; feign在远程调用之前要构造请求&#xff0c;调用了很多的拦截器。 浏览器发送请…

u01使用率100%报错归档满的问题

今天下午客户报数据库无法连接了&#xff0c;我也立刻登录查看 因为显示orcl1归档满了&#xff0c;我就登录查看磁盘组的空间&#xff0c;发现空间空余很多 就sqlpus登录了&#xff0c;发现u01使用率满了 [oracledb1 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 …

《面试1v1》动态代理

我是 javapub&#xff0c;一名 Markdown 程序员从&#x1f468;‍&#x1f4bb;&#xff0c;八股文种子选手。 面试官&#xff1a; 那你能说一下反射和动态代理的关系吗&#xff1f; 候选人&#xff1a; 当然可以。动态代理是一种基于反射的机制&#xff0c;它可以在运行时动…

动设备维护管理的新趋势——在线监测与故障诊断系统

随着工业自动化水平的提高&#xff0c;动设备在现代工业中扮演着越来越重要的角色。然而&#xff0c;动设备故障率高、维修难度大、维护费用高是工厂面临的重要挑战之一。针对这些问题&#xff0c;在线监测与故障诊断系统逐渐成为动设备维护管理的新趋势。 图.设备工程师正在维…

Spring Cloud Alibaba: Gateway 网关过滤器 GatewayGatewayFilter factory (记录)

目录 AddRequestHeader GatewayFilter factory AddRequestHeadersIfNotPresent GatewayFilter factory AddRequestParameter GatewayFilter Factory AddResponseHeader GatewayFilter Factory CircuitBreaker GatewayFilter factory circuit breaker based on the status…

真题详解(构造二叉树)-软件设计(六十八)

真题详解&#xff08;归纳法&#xff09;-软件设计&#xff08;六十七)https://blog.csdn.net/ke1ying/article/details/130517187 CMM能力成熟模型 CL0(未完成)&#xff1a;过程域未执行或未得到定义的目标。 CL1(已执行)&#xff1a;将可标识的输入工作产品转换成可标识的…

数组中的empty剖析

数组中的empty剖析 一、首先empty是怎么来的 直接通过new Array来新建&#xff0c;手动修改数组的length&#xff0c;逗号之间没有任何数据等 const array new Array(3); console.log(array); //* (3) [empty 3]const array2 [1, , 3]; console.log(array2); //* [1, e…

【软考|软件设计师】进程p1,p2,p3,p4,p5和p6的前趋图

目录 题目&#xff1a; 答&#xff1a; 题目&#xff1a; 进程p1,p2,p3,p4,p5和p6的前趋图如下图所示。用PV操作控制这6个进程之间同步与互斥 的程序如下&#xff0c;程序中的空(1)和空(2)处应分别为________,空(3)和空(4)处分别为________, 空(5)和空(6)处应分别为_______…

数据结构:图的插入和删除

线性表中我们把数据元素叫元素&#xff0c;树中将数据元素叫结点&#xff0c;在图中的数据元素我们称之为顶点&#xff08;Vertex&#xff09;。 线性表中可以没有数据元素&#xff0c;称之为空表。树中可以没有结点&#xff0c;叫做空树。但图没有空图。 线性表中&#xff0c;…

2023年好用的MacBook文件管理软件推荐

我们已经有多年的 macOS 编程经验&#xff0c;也开发了很多大家都可以使用的工具。 我们可以解决各种 Mac 问题。 CleanMyMac X 这里是一些小建议&#xff1a;下载 CleanMyMac 即可快速解决本文章中提到的一些问题。但是&#xff0c;为了帮助您自行操作&#xff0c;我们还整理…

举一反三,从“温度转换“到“python蟒蛇绘制“,快速掌握Python语法

1.温度转换实例 我们先用Pychar写一个小程序,从这个小程序出发,我们将快速学习到python中的基础语法.本章中涉及到的语法只是初始语法部分,后续章节将会详细讲解python语法. "温度转换"实例编写:将两种温度体系转换.摄氏度转换为华氏度华氏度转换为摄氏度. 设计算法…

前端项目的通用优化策略

一、虚拟滚动 当我们开发的时候&#xff0c;遇到大数据加载&#xff0c;页面卡顿的问题应该如何处理&#xff1f;大多数情况下&#xff0c;我们都是尽量通过分页的方式处理这类问题&#xff0c;但是总有一些特殊的情况我们必须把数据全部加载到前端进行处理。我曾经遇到过一个…

智能优化算法:基于厨师的优化算法-附代码

智能优化算法&#xff1a;基于厨师的优化算法 文章目录 智能优化算法&#xff1a;基于厨师的优化算法1.基于厨师的优化算法1.1 初始化1.2 阶段1&#xff1a;厨师导师小组更新&#xff08; X S 1 XS_1 XS1​到 X S N c XS_{Nc} XSNc​更新&#xff09;1.3 阶段2&#xff1a;厨师…

Arduino处理json较大数据流以及GZIP数据流方法

Arduino处理json较大数据流以及GZIP数据流方法 ✨在一些需要使用网络并从网络数据平台获取数据的项目中,大多数据平台,提供支持的数据流格式,一般以json数据格式返回为主。 📓Arduino json数据流格式化处理方法 🏳‍🌈一般处理json数据基于都是通过ArduinoJson库来处理…