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

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

import os
import xml.etree.ElementTree as ETdef parse_xml(xml_file):tree = ET.parse(xml_file)root = tree.getroot()objects = {}for obj in root.findall('object'):name = obj.find('name').textbbox = 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 objectsdef get_camera_id(filename):# 从文件中提取摄像头IDreturn 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 Noneif "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.mzph.cn/web/13902.shtml

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

相关文章

升级openssl与python问题

1、下载与安装 wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1t.tar.gz tar -zxvf openssl-1.1.1t.tar.gz cd openssl-1.1.1t/ ./config --prefix/usr/local/ssl make sudo make install 2、完成后添加软链接 mv /usr/bin/openssl /usr/bin/oldope…

Flutter 中的 ExpandIcon 小部件:全面指南

Flutter 中的 ExpandIcon 小部件:全面指南 Flutter 提供了一系列的动画图标,ExpandIcon 就是其中之一,它用于表示一个可以展开或收起的内容区域。这个小部件通常用于实现折叠列表、手风琴菜单或其他类似的UI元素。本文将为您提供一个全面的指…

头歌05-排列树实验-批处理作业调度

""" 题目:给定n个作业的集合{J1,J2,…,Jn}。每个作业必须先由机器1处理,然后由机器2处理。所有任务必须先由机器1处理完成后,才能由机器2处理,并且在机器2的处理顺序必须与机器1的处理顺序一致,处理顺序…

【DevOps】深入浅出:Jenkins 性能监控全解析

目录 一、监控指标:把握系统健康状况 1、资源利用率: 2、 任务执行效率: 3、系统稳定性: 二、监控工具:选择合适的利器 1、Jenkins 内置监控 1.1、Jenkins Performance Plugin:系统性能指标的直观展…

Android Webview加载pdf文件无法缩放问题

WebView设置开启页面缩放: settings webView.getSettings(); settings.setSupportZoom(true); settings.setJavaScriptEnabled(true); settings.setUseWideViewPort(true); settings.setLoadWithOverviewMode(true); settings.setBuiltInZoomControls(true); sett…

CDN管理平台安装说明

CDN管理平台安装说明 系统需求 操作系统:Linux CPU不少于1核心 可用内存不少于1G 可用硬盘空间不小于10G 对于每日千万访问以上的CDN系统推荐配置如下: CPU不少于8核心 可用内存不少于8G 可用硬盘空间不小于200G 准备工作 在安装GoEdge之前&#xff0…

kubernetes(k8s) v1.30.1 创建本地镜像仓库 使用本地docker镜像仓库部署服务 Discuz X3.5 容器搭建论坛

1 master11创建本地镜像仓库 [rootmaster11 ~]# docker run -d -p 5000:5000 --restartalways --name registry registry:2 Unable to find image registry:2 locally 2: Pulling from library/registry 79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df…

Python 机器学习 基础 之 数据表示与特征工程 【分类变量】的简单说明

Python 机器学习 基础 之 数据表示与特征工程 【分类变量】的简单说明 目录 Python 机器学习 基础 之 数据表示与特征工程 【分类变量】的简单说明 一、简单介绍 二、数据表示与特征工程 数据表示 特征工程 三、分类变量 1、One-Hot编码(虚拟变量&#xff09…

漫谈企业信息化安全-综述

一、前言 一直以来想写一些文章,谈一谈企业信息化过程中的安全问题及对策。 随着信息技术的不断发展和普及,特别是今年来移动办公、云服务等等新的工作模式和新的信息技术的应用,企业信息化已经成为提升竞争力、促进创新和发展的重要途径。…

websocket聊天(全源码)

区别&#xff1a;我认为的websocket和轮询的区别 轮询是客户端定期向服务端发送请求&#xff0c;目的是获取的信息 websocket则是服务端直接向客户端发送想要获取的信息 配置jdk17 idea 2022 代码 pom <?xml version"1.0" encoding"UTF-8"?>…

从BIO到NIO到AIO: Java全面IO模型解析

1. Java IO模型概述 Java IO&#xff08;输入/输出&#xff09;是Java编程语言中用于数据输入和输出的一组功能强大的API。这些API为文件IO、网络IO以及系统资源IO提供了丰富的类和接口。由于IO操作直接与操作系统交互&#xff0c;因此理解Java IO模型与操作系统模型如何联系是…

C++ | Leetcode C++题解之第108题将有序数组转换为二叉搜索树

题目&#xff1a; 题解&#xff1a; class Solution { public:TreeNode* sortedArrayToBST(vector<int>& nums) {return helper(nums, 0, nums.size() - 1);}TreeNode* helper(vector<int>& nums, int left, int right) {if (left > right) {return nu…

算法学习:快速排序

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 &#x1f680; 引言&#x1f4cc; 快速排序算法核心思想1. 选择基准值&#xff08;Pivot&#xff09;2. 分区操作&#xff08;Partitioning&#xff09;3. 递归排序子序列 &#x1f4cc; JavaScript 实现1. 快速排序主函数2…

基于Perfetto 解读一帧的生产消费流程 Android >= S Qualcomm

广告 首先帮我朋友打个广告 我们一起在运营一个视频号 感兴趣的可以帮忙点击右边这个小铃铛 铃铛 序 1.这个流程里面的东西如果展开其实是有很多的 内容其实还是比较浅显的 sf处就不贴源码了 关一个Vsync就有的解释 当然笔者在流程上先形成一个思维闭环 2.如有小伙伴需要 笔…

Java方法的递归

Java方法的递归 前言一、递归的概念示例代码示例 二、递归执行过程分析代码示例执行过程图 三、递归练习代码示例按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)递归求 1 2 3 ... 10写一个递归方法&#xff0c;输入一个非负整数&#xff0c;返回组成它的数字之和. …

零基础学Java第二十一天之IIO流之对象流

IO流之对象流 1、对象流 1、理解 将对象写入到文件&#xff0c;将文件里的对象读取到程序中 class ObjectInputStream – 对象输入流 class ObjectOutputStream – 对象输出流 序列化/钝化&#xff1a;程序里的对象 写入到 文件中 反序列化/活化&#xff1a;文件中的对象 读取…

【OpenCV实战】OpenCV实现自动调整亮度和对比度

一,基于局部直方图信息增强算法 对比度受限的自适应直方图均衡化(Contrast Limited Adaptive Histogram Equalization,简称CLAHE)是一种用于图像增强的技术,其原理主要基于自适应直方图均衡化(Adaptive Histogram Equalization,简称AHE)但增加了对比度限制来避免过度放…

uniapp蓝牙打印图片

前言 这是个蓝牙打印图片的功能&#xff0c;业务是打印界面固定的demo范围&#xff0c;这里通过html2canvas插件生成的图片base64&#xff0c;然后图片base64绘制到canvas中去后&#xff0c;获取canvas中的像素信息&#xff0c;然后对像素信息进行一个灰度值处理&#xff0c;灰…

在Linux系统中解决Java生成海报文字乱码和缺少字体文件的问题

在Linux系统中,如果缺少特定的字体文件,可以通过以下几种方法来解决: 1. 安装系统字体包 大多数Linux发行版提供了各种字体包,可以通过包管理器安装这些字体包。例如,在Debian/Ubuntu系统上,可以使用以下命令安装常见的字体包: # 安装基本的字体包 sudo apt-get updat…

Java集合的组内平均值怎么计算

要计算Java集合&#xff08;例如List或Set中的Integer、Double或其他数值类型的对象&#xff09;的组内平均值&#xff0c;我们需要遍历这个集合&#xff0c;累加所有的元素值&#xff0c;然后除以集合的大小&#xff08;即元素的数量&#xff09;。以下是一个详细的步骤说明和…