Python实现利用仅有像素级标注的json文件生成框标注的json文件,并存放到新文件夹

import json
import os
# create rectangle labels based on polygon labels, and store in a new folder
def create_rectangle_shapes(polygon_shapes):
    rectangle_shapes = []
    for polygon_shape in polygon_shapes:
        # 获取多边形的坐标点
        points = polygon_shape['points']
        # 找到最左上角和最右下角的坐标
        left = min(points, key=lambda x: x[0])[0]
        bottom = min(points, key=lambda x: x[1])[1]
        right = max(points, key=lambda x: x[0])[0]
        top = max(points, key=lambda x: x[1])[1]
        # 创建新的矩形形状
        rectangle_shape = {
            "label": polygon_shape['label'],
            "points": [
                [left, bottom],
                [right, top],
            ],
            "group_id": polygon_shape['group_id'],
            "shape_type": "rectangle",
            "flags": polygon_shape['flags']
        }
        rectangle_shapes.append(rectangle_shape)
    return rectangle_shapes

def main(json_file, target_file):
    # 读取原始JSON文件
    with open(json_file, 'r', encoding='utf-8') as f:
        data = json.load(f)

    # 删除所有shape_type为rectangle的标注
    data['shapes'] = [shape for shape in data['shapes'] if shape['shape_type'] != 'rectangle']

    # 生成新的shape_type为rectangle的标注
    rectangle_shapes = create_rectangle_shapes(data['shapes'])

    # 将新的矩形形状添加到原始数据中
    data['shapes'].extend(rectangle_shapes)

    # 创建输出文件夹
    # output_dir = r'D:\dataset\dataset\1_seg_rect'
    # if not os.path.exists(output_dir):
    #     os.makedirs(output_dir)

    # 保存新的JSON文件
    # with open(os.path.join(output_dir, r'20231016-105404-812_9.json'), 'w') as f:
    with open(target_file, 'w') as f:
        json.dump(data, f, indent=4)

# 运行脚本
if __name__ == "__main__":
    jsonF = []
    newF = []
    for i in range(1,7):  # 此处替换文件目录地址
        json_folder = r'D:\dataset\dataset'  # 存放json文件的目录
        new_folder = r"D:\dataset\dataset"  # 存放新json文件的目录
        json_folder += '\\' + str(i) + '_seg_without_rect'
        new_folder += '\\' + str(i) + '_seg_rect'
        if os.path.exists(json_folder):
            jsonF.append(json_folder)
            newF.append(new_folder)
            if not os.path.exists(new_folder):
                os.makedirs(new_folder)
        else:
            print("not found file")
    for i in range(len(jsonF)):
        for filename in os.listdir(jsonF[i]):
            if filename.split(".")[-1]=="json":
                f = os.path.join(jsonF[i], filename)
                o = os.path.join(newF[i], filename)
                
                main(f,o)
                print(f+" completed")

文件目录结构如图:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot142新冠病毒密接者跟踪系统

新冠病毒密接者跟踪系统设计与实现 摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲&#xff…

Flink实战五_状态机制

接上文:Flink实战四_TableAPI&SQL 在学习Flink的状态机制之前,我们需要理解什么是状态。回顾我们之前介绍的很多流计算的计算过程,有些计算方法,比如说我们之前多次使用的将stock.txt中的一行文本数据转换成Stock股票对象的ma…

Mongodb安装Linux

确定你的CentOS 版本 使用以下命令: /etc/centos-release下载Mongodb 解压tgz压缩包 创建data和log文件夹 , 确定你的文件夹访问权限 在log文件夹里面创建mongodb.log文件(这一步很重要 ! ! !) touch mongodb.log创建mongodb.conf文件 在你的mongodb文件夹下 vi mongo…

IDEA的properties默认编码是UTF-8但是不显示中文

问题描述 今天打开IDEA项目,发现messages_zh_CN.properties不显示中文了 但奇怪的是target下的文件就是展示的中文 而且我IDEA已经配置了编码格式是UTF-8了 使用nodepad打开源文件,也是展示编码格式是UTF-8 (打开target下的文件,…

数字存内计算与云边端具有广泛的应用场景深度剖析【根据中国移动研究院文献分析总结】

文章目录 背景数字存内计算技术研究端侧应用场景边侧应用场景云侧应用场景 总结参考文献: 背景 存内计算产品基于其不同的器件特性和计算方式,能够为云、边缘和端设备提供推理、训练等多种人工智能(AI)能力,从而提升运…

vue3/vue2中自定义指令不可输入小数点.

import { directive } from vueconst noDecimal {mounted(el) {el.addEventListener(keypress, (e) > {if (e.key .) {e.preventDefault() }})} }// 使用自定义指令 directive(no-decimal, noDecimal)使用 标签上添加 v-no-decimal <el-input…

设计模式_备忘录模式_Memento

案例引入 游戏角色有攻击力和防御力&#xff0c;在大战Boss前保存自身的状态(攻击力和防御力)&#xff0c;当大战Boss后攻击力和防御力下降&#xff0c;可以从备忘录对象恢复到大战前的状态 传统设计方案 针对每一种角色&#xff0c;设计一个类来存储该角色的状态 【分析】…

如何使用 Supabase Auth 在您的应用程序中设置身份验证

在本文中&#xff0c;您将学习基本的关键概念&#xff0c;这些概念将帮助您掌握身份验证和授权的工作原理。 您将首先了解什么是身份验证和授权&#xff0c;然后了解如何使用 Supabase auth 在应用程序中实现身份验证。 &#xff08;本文内容参考&#xff1a;java567.com&…

【Linux取经路】进程控制——进程等待

文章目录 一、进程创建1.1 初识 fork 函数1.2 fork 函数返回值1.3 写时拷贝1.4 fork 的常规用法1.5 fork 调用失败的原因1.6 创建一批进程 二、进程终止2.1 进程退出场景2.2 strerror函数2.3 errno全局变量2.4 程序异常2.5 进程常见退出方法2.6 exit 函数2.7 _exit 函数和 exit…

mysql8安装基础操作(一)

一、下载mysql8.0 1.查看系统glibc版本 这里可以看到glibc版本为2.17&#xff0c;所以下载mysql8.0的版本时候尽量和glibc版本对应 [rootnode2 ~]# rpm -qa |grep -w glibc glibc-2.17-222.el7.x86_64 glibc-devel-2.17-222.el7.x86_64 glibc-common-2.17-222.el7.x86_64 gl…

【Tomcat与网络9】提高Tomcat启动速度的八大措施

本文我们来看一下如何对Tomcat进行调优&#xff0c;我们对于Tomcat的调优主要集中在三个方面&#xff1a;提高启动速度、提高系统稳定性和提高并发能力&#xff0c;后两者很多时候是相辅相成的&#xff0c;我们放在一起看。 Tomcat现在一般都嵌入在SpringBoot里&#xff0c;因…

基于ecal的foxglove studio可视化工具的使用

ecal通讯在自动驾驶和机器人中的应用越来越多,在调试测试过程中,可以使用ecal monitor,ecal recoder和ecal player等工具,对ecal 消息进行监测录制回播。但是,有时候需要对消息进行可视化查看,比如雷达点云信息,相机图像等,可以使用foxglove studio可视化工具。 Foxg…

高性能跨平台网络通信框架 HP-Socket v6.0.1

项目主页 : http://www.oschina.net/p/hp-socket开发文档 : https://www.docin.com/p-4592706661.html下载地址 : https://github.com/ldcsaa/HP-SocketQQ Group: 44636872, 663903943 v6.0.1 更新 一、主要更新 优化Linux通信组件多路复用处理架构&#xff0c;避免“惊群”问…

Android 高德地图切换图层

一、默认样式 Android 地图 SDK 提供了几种预置的地图图层&#xff0c;包括卫星图、白昼地图&#xff08;即最常见的黄白色地图&#xff09;、夜景地图、导航地图、路况图层。 findViewById<TextView>(R.id.normal).setOnClickListener {updateSelectedStatus(TYPE_NORMA…

基于SpringBoot+Vue实现的物流快递仓库管理系统

基于SpringBootVue实现的物流快递仓库管理系统 文章目录 基于SpringBootVue实现的物流快递仓库管理系统系统介绍技术选型成果展示账号地址及其他说明源码获取 系统介绍 系统演示 关注视频号【全栈小白】&#xff0c;观看演示视频 基于SpringBootVue实现的物流快递仓库管理系…

【PyQt】02-基本UI

文章目录 前言一、首先了解什么是GUI&#xff1f;二、初学程序1.界面展示代码运行结果 2.控件2.1按钮展示代码运行结果 2.2 纯文本和输入框代码运行结果 3、重新设置大小 -resize4、移动窗口-move()5、设置界面在电脑中央5.1 代码运行结果 6、设置窗口图标代码运行结果 7、布局…

上岸秘籍来啦!TOGAF认证考试全攻略

上岸秘籍来啦&#xff01;手把手教你如何顺利通过TOGAF认证考试&#xff01; &#x1f31f;考试内容 TOGAF 9.2认证分为两个级别&#xff1a; ✅ TOGAF基础级&#xff1a;掌握标准术语、结构和基本概念&#xff0c;理解企业架构和核心标准。 ✅ TOGAF鉴定级&#xff1a;深入分析…

Skywalking trace UI页面中字段信息详解,包括端点、跨度类型和Peer

刚上手Skywalking的同学可能对 trace UI 页面信息中的字段信息不是很了解&#xff0c;在这里就给大家一一讲解&#xff0c;重点关注端点、跨度类型和Peer 服务 :服务的名称 实例&#xff1a;服务对应的实例 端点&#xff1a;端点(Endpoint) 对于特定服务所接收的请求路径, 如…

2024技术发展洞察与趋势学习总结

2023技术发展洞察 2024技术发展趋势

算法--数论

这里写目录标题 质数&#xff08;素数&#xff09;定义判断是否为质数暴力写法&#xff0c;试除法基本思想具体写法 优化基本思想&#xff08;时间复杂度根号n&#xff09;具体写法 分解质因数分析题意暴力写法基本思想具体代码 优化基本思想&#xff08;时间复杂度小于等于根号…