当前位置: 首页 > news >正文

网站上做地图手机上显示不出来的南昌seo全网营销

网站上做地图手机上显示不出来的,南昌seo全网营销,商城网站备案流程,石家庄网站建设德信互联科技有限公司目录 前言 思路介绍 代码 完整代码 拓展代码 前言 很多人在进行目标检测训练时习惯将得到的数据标注为XML文件的VOC格式,或者在网上获取的数据集被标注为XML文件,但是不同的标注工具进行的标注会产生不同的标注xml文件,这里我写了一种通用…

目录

前言

思路介绍

代码

完整代码

拓展代码


前言

        很多人在进行目标检测训练时习惯将得到的数据标注为XML文件的VOC格式,或者在网上获取的数据集被标注为XML文件,但是不同的标注工具进行的标注会产生不同的标注xml文件,这里我写了一种通用的针对含有最基本图片和标注坐标信息的xml进行转换,在这里简单介绍并分享出来

思路介绍

        xml文件中最基本需要含有的信息为size,object下的name和bndbox,具体示例如下图(如果xml文件中没有size也就是图片的宽和高则需要单独对每个图片进行读取,感兴趣可以私聊,这里不展开介绍)

 

        可以看到这几个标签下包含了标注的全部信息,接着进行转换

代码

        核心代码为,提取所需要的信息

size = root.find('size')
width = int(size.find('width').text)
height = int(size.find('height').text)
# 存储name和对应的归一化坐标
objects = []
# 遍历XML中的object标签
for obj in root.findall('object'):name = obj.find('name').textif name in category_to_index:category_index = category_to_index[name]else:continue  # 如果name不在指定类别中,跳过该objectbndbox = obj.find('bndbox')xmin = int(bndbox.find('xmin').text)ymin = int(bndbox.find('ymin').text)xmax = int(bndbox.find('xmax').text)ymax = int(bndbox.find('ymax').text)

        归一化代码如下,这也是YOLO格式的通用归一化代码

x_center = (xmin + xmax) / 2.0
y_center = (ymin + ymax) / 2.0
w = xmax - xmin
h = ymax - yminx = x_center / width
y = y_center / height
w = w / width
h = h / height

        这里最下边四行代码即为txt中每一行后四位数字

完整代码

        完整代码如下

import os
import xml.etree.ElementTree as ET# 定义类别顺序
categories = ['eggplant']
category_to_index = {category: index for index, category in enumerate(categories)}# 定义输入文件夹和输出文件夹
input_folder = r'D:\Annotations'  # 替换为实际的XML文件夹路径
output_folder = r'D:\labels'  # 替换为实际的输出TXT文件夹路径# 确保输出文件夹存在
os.makedirs(output_folder, exist_ok=True)# 遍历输入文件夹中的所有XML文件
for filename in os.listdir(input_folder):if filename.endswith('.xml'):xml_path = os.path.join(input_folder, filename)# 解析XML文件tree = ET.parse(xml_path)root = tree.getroot()# 提取图像的尺寸size = root.find('size')width = int(size.find('width').text)height = int(size.find('height').text)# 存储name和对应的归一化坐标objects = []# 遍历XML中的object标签for obj in root.findall('object'):name = obj.find('name').textif name in category_to_index:category_index = category_to_index[name]else:continue  # 如果name不在指定类别中,跳过该objectbndbox = obj.find('bndbox')xmin = int(bndbox.find('xmin').text)ymin = int(bndbox.find('ymin').text)xmax = int(bndbox.find('xmax').text)ymax = int(bndbox.find('ymax').text)# 转换为中心点坐标和宽高x_center = (xmin + xmax) / 2.0y_center = (ymin + ymax) / 2.0w = xmax - xminh = ymax - ymin# 归一化x = x_center / widthy = y_center / heightw = w / widthh = h / heightobjects.append(f"{category_index} {x} {y} {w} {h}")# 输出结果到对应的TXT文件txt_filename = os.path.splitext(filename)[0] + '.txt'txt_path = os.path.join(output_folder, txt_filename)with open(txt_path, 'w') as f:for obj in objects:f.write(obj + '\n')

拓展代码

        这个代码类别还需要自己获取并填写,这里给出一种更简单的方法,可以省去填写标签列表的环节并且自动类别编号,完整代码如下

import os
import xml.etree.ElementTree as ET
names_set = set()input_folder = r'D:\Annotations'  # 替换为实际的XML文件夹路径
output_folder = r'D:\labels'  # 替换为实际的输出TXT文件夹路径for filename in os.listdir(input_folder):if filename.endswith('.xml'):tree = ET.parse(os.path.join(input_folder, filename))root = tree.getroot()for obj in root.findall('object'):name = obj.find('name').textnames_set.add(name)
# 输出所有的name
categories = []
for name in names_set:categories.append(name)
print(categories)category_to_index = {category: index for index, category in enumerate(categories)}
os.makedirs(output_folder, exist_ok=True)# 遍历输入文件夹中的所有XML文件
for filename in os.listdir(input_folder):if filename.endswith('.xml'):xml_path = os.path.join(input_folder, filename)# 解析XML文件tree = ET.parse(xml_path)root = tree.getroot()# 提取图像的尺寸size = root.find('size')width = int(size.find('width').text)height = int(size.find('height').text)# 存储name和对应的归一化坐标objects = []# 遍历XML中的object标签for obj in root.findall('object'):name = obj.find('name').textif name in category_to_index:category_index = category_to_index[name]else:continue  # 如果name不在指定类别中,跳过该objectbndbox = obj.find('bndbox')xmin = int(bndbox.find('xmin').text)ymin = int(bndbox.find('ymin').text)xmax = int(bndbox.find('xmax').text)ymax = int(bndbox.find('ymax').text)# 转换为中心点坐标和宽高x_center = (xmin + xmax) / 2.0y_center = (ymin + ymax) / 2.0w = xmax - xminh = ymax - ymin# 归一化x = x_center / widthy = y_center / heightw = w / widthh = h / heightobjects.append(f"{category_index} {x} {y} {w} {h}")# 输出结果到对应的TXT文件txt_filename = os.path.splitext(filename)[0] + '.txt'txt_path = os.path.join(output_folder, txt_filename)with open(txt_path, 'w') as f:for obj in objects:f.write(obj + '\n')

http://www.yayakq.cn/news/53354/

相关文章:

  • 网站建设联wordpress版权文字
  • 建立什么本地网站赚钱一舍设计公司
  • 招生网站模版wordpress trash
  • 国内购物网站排名建立网站费用表
  • 画家网站建设织梦 大型综合旅游网站 源码
  • 网站开发用哪个框架php网站开发使用技术PDF下载
  • 进口国际博览会上海小红书seo是什么意思
  • 延安做网站电话无锡今天最新通知
  • 杨小刀网站建设北京网站技术开发公司
  • 大学生创新项目申报书 做网站wordpress评论回复邮箱
  • 代理下单网站开发微网站的价格
  • 中网-西安网站建设公司wordpress 主题页脚
  • 做网站找王思奇番禺品牌型网站
  • 新手学做网站看什么书手机网站公司
  • 网站模板 餐饮医疗网站建站需求
  • 互动的网站建设wordpress 变成中文
  • 东莞手机网站asp.net 做网站源代码
  • 全flash网站制作教程怎么对网站的数据库做管理
  • 网站标题和关键词一样用友erp管理系统多少钱
  • 企业网站页面医院网站 功能
  • 网站做联盟收入有网站加金币的做弊器吗
  • 企业自助建站网佛山网络推广公司
  • 万网建设网站可以做任务挣钱的网站
  • 优秀金融网站设计室内设计公司有哪些部门
  • 大兴网站建设潍坊手机模板建站
  • 做网站有哪些注意事项品古典家具网站模板
  • 网站建设步骤流程详细介绍河南app手机网站制作
  • 墙纸 html 网站模板穷人没本钱怎么创业
  • 电子商务网站建设的作用有哪些免费做网站
  • 自己做个网站怎么做必应网站收录在哪