xml篇---提取VOC格式的坐标,并按照cameraID进行排序(二)

news2024/9/25 9:32:02

xml篇—提取VOC格式的坐标,并按照cameraID进行排序(二)

import os
import xml.etree.ElementTree as ET


def parse_xml(xml_file):
    tree = ET.parse(xml_file)
    root = tree.getroot()
    objects = {}
    for obj in root.findall('object'):
        name = obj.find('name').text
        bbox = obj.find('bndbox')
        xmin = int(bbox.find('xmin').text)
        ymin = int(bbox.find('ymin').text)
        xmax = int(bbox.find('xmax').text)
        ymax = int(bbox.find('ymax').text)
        if name not in objects:
            objects[name] = []
        objects[name].append((xmin, ymin, xmax, ymax))
    return objects


def get_camera_id(filename):
    # 从文件中提取摄像头ID
    return filename.split('-')[0]


def main():
    folder_path = '/app/yyq/dataset/profile_materials/camera_point/jiuting_picture/xml'  # 修改为你的XML文件夹路径
    xml_files = [f for f in os.listdir(folder_path) if f.endswith('.xml')]

    # 根据摄像头ID排序文件列表
    xml_files_sorted = sorted(xml_files, key=lambda x: get_camera_id(x))

    cameraid_dict = {}
    links = []

    for xml_file in xml_files_sorted:
        xml_path = os.path.join(folder_path, xml_file)
        objects = parse_xml(xml_path)
        camera_id = xml_file.split('-')[0]

        if "1" in objects:
            cameraid_dict[camera_id] = objects["1"][0] if objects["1"] else None

        if "2" in objects:
            links.append({
                "name": camera_id,
                "box": objects["2"]
            })

    print("CAMERAID_DICT = {")
    for camera_id, bbox in cameraid_dict.items():
        print(f'    "{camera_id}": {bbox},')
    print("}")

    print("\nLINKS = [")
    for link in links:
        print("    {")
        print(f'        "name": "{link["name"]}",')
        print(f'        "box": {link["box"]}')
        print("    },")
    print("]")


if __name__ == '__main__':
    main()

结果如下:

CAMERAID_DICT = {
    "3101171070000000": (700, 396, 874, 614),
    "3101171070000001": (272, 741, 1178, 1080),
}

LINKS = [
    {
        "name": "3101171070000000",
        "box": [(823, 396, 874, 432)]
    },
    {
        "name": "3101171070000001",
        "box": [(888, 739, 1180, 893), (274, 987, 425, 1076)]
    },
]

在这里插入图片描述

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

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

相关文章

电商API接口:供应商价格与主流电商平台价格做比价

品牌在进行采购工作时,将供应商提供的价格与主流电商平台上的公开价格进行比价是一种非常常见的做法,这样做的目的主要是为了保证自身供应商提供的价格具有竞争力和合理性,从而更好地优化采购工作。 以下是过程中的具体步骤及一些注意事项&a…

是他将计算机从“一屋子”变成“一柜子”——量子前哨缅怀小型机之父 戈登·贝尔

内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨沛贤 深度好文:6000字丨15分钟阅读 5 月 21 日, 美国贝尔实验室资深人士 John Mashey 发布消息称,计算机先驱戈登贝尔(Gordon…

左极限与右极限

左极限与右极限 1. 前言 极限描述了函数在一个定点附近的行为,具体说就是当函数的自变量(例如 x x x)趋近于某一个值时,函数的因变量(例如 y y y)会产生什么样的特性(或结果)。 …

优于其他超导量子比特数千倍!猫态量子比特实现超过十秒的受控比特翻转时间

内容来源:量子前哨(ID:Qforepost) 文丨娴睿/慕一 排版丨沛贤 深度好文:2000字丨8分钟阅读 摘要:量子计算公司Alice & Bob和QUANTIC团队(国立巴黎高等矿业学院PSL分校、巴黎高等师范学院和…

如何解决IT运维不给力

运维不给力,是很多企业IT部门面临的头疼问题,其背后的原因错综复杂,可能涉及到资金投入不足、团队积极性不高、或是缺乏科学的运维管理体系。要解决这些问题,引入IT运维管理和利用先进的ITILDESK平台,可以作为破局的关…

三、Servlet基础

注:因为我并不完全是为了从0开始Java开发,因此,我这里先暂时跳过第二章服务器环境相关的内容,直接开始第三章的内容。 3.1、Servlet 的基本结构: ​ 下面的代码给出了一个基本的 Servlet ,它处理 GET 请求…

2028. 找出缺失的观测数据

问题描述 现有一份 n m 次投掷单个六面骰子的观测数据,骰子的每个面从 1 到 6 编号。观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据。幸好你有之前计算过的这 n m 次投掷数据的平均值。 给你一个长度为 m 的整数数组 rolls,其中…

当 GIS 遇上 AI 大模型

今年整个 IT 界、甚至科技界最火爆的技术就是 AI 大模型了,没有之一。 以 OpenAI 的 GPT 为代表、国内外一众大模型跟进,形成了百模齐奔的态势。围绕着大模型,各项周边的应用也在快速发展。在 2023 年年底的云栖大会上,论坛标题带…

一款非常好用的python OCR文字识别框架

项目简介 一个文档 OCR 工具包,它具有以下功能: 支持 90 多种语言的 OCR,其基准测试优于云服务 任何语言的行级文本检测 布局分析(表格、图像、标题等检测) 读取顺序检测 它适用于一系列文档(有关更多详细信息,请参阅用法和基准)。 DetectionOCRLayoutReading Order 阅…

大规模敏捷SA(Leading SAFe)证书是什么意思?如何报名,含金量高吗?

大规模敏捷SA(Leading SAFe)证书是什么意思? 常规的敏捷框架适用于中小型项目团队,而且不具有扩展性。基于常规的敏捷框架,SAFe定义了一个可扩展的敏捷框架模型,它适用于大型团队的合作开发,可以提高团队之间的协作性…

vue-3d-loader 加载多个模型

需求 1、在使用three.js进行开发的过程中,需要列表加载多个模型,并根据需要多模型进行加载。 2、当鼠标移动到图片上去的时候,开始加载模型, 模型进行加载和展示。 3、在制作3d沉浸式商城时,需要根据需求&#xff0…

Easy IP + DNAT(服务器NAT转换)

第一章 Easy IP 1.1 一般家庭和企业使用的地址转换方式 直接使用出接口的地址做转换Easy IP适用于小规模居于网中的主机访问Internet的场景如:家庭、小型网吧、小型办公室中,这些地方内部主机不多,出接口可以通过拨号方式获取一个临时公网I…

用PhpStudy在本地电脑搭建WordPress网站教程(2024版)

对新手来说,明白了建站3要素后,如果直接购买域名、空间去建站,因为不熟练,反复测试主题、框架、插件等费时费力,等网站建成可能要两三个月,白白损失这段时间的建站费用。那么新手怎么建测试网站来练手呢&am…

会声会影破解版百度云(附安装教程) 会声会影下载免费中文版 会声会影2024激活码,注册机

会声会影是一款功能强大的视频与电影编辑软件,它拥有出色的色彩校正和视频氛围调整工具。这款软件对颜色、平度HSL调谐、色调曲线以及波形范围等细微变化有着敏锐的感知,能够轻松实现颜色的精确移动和校正。此外,会声会影还提供了丰富的功能&…

做抖音小店不懂这四个“重点”!那就别怪你的店铺,做不长久!

我相信大家做抖音小店,都去抖音刷过知识点,也去浏览器学习过技巧 但在这里,我给大家泼盆冷水 方法再多!这四点不搞明白,那你的店铺出几天单,也就再也做不起来了 哪四点?请认真的看下去&#…

如何将一个JavaEE的SDK依赖到Android中

1. 前言 最近有个需求,需要集成阿里的一个SDK : 通义听悟,但是这个SDK是专门给Web端JavaEE使用的,所以导致接入后,运行报错,有兼容性问题,该如何解决,使其能在Android中正常运行呢 ? 2. 添加…

舞蹈工作室会员服务预约门店管理系统小程序的作用是什么

舞蹈涵盖少儿、街舞、芭蕾、拉丁等多个细分类目,舞蹈工作室除了商演外,内部还有学员培训教育等,提高营收和提升服务效率是商家一直需要思考的问题,线上化程度加深,需要满足客户个性化需求且快速完成流程。 运用【雨科…

windows11下,使用工具验证下载的iso文件完整性

windows11下,要验证下载的iso文件是否正常,可以使用工具生成md5值,再与下载源提供的md5值进行比较,相同,说明下载的正常。 命令如下: certutil -hashfile iso文件名 md5 如下面的例子,生成d…

VGG论文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition

VGG论文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition -2015 研究背景 大规模图像识别的深度卷积神经网络 VGG(牛津大学视觉几何组) 认识数据集:ImageNet的大规模图像识别挑战赛 LSVRC-2014:Image…

【EI会议】2024年互联网技术与环境工程国际会议(IACITEE 2024)

【EI会议】2024年互联网技术与环境工程国际会议(IACITEE 2024) 2024 International Conference on Internet Technology and Environmental Engineering 互联网技术与环境工程国际会议(IACITEE 2024)将在重庆举行,主…