labelme 圆形转矩形框标注

import json
import math
import os


def calculate_square_from_circle(circle_center, radius_point):
    """
    根据圆心和圆上一点计算正方形边界框的左上角和右下角坐标。
    """
    # 计算半径
    radius = math.sqrt((circle_center[0] - radius_point[0]) ** 2 + (circle_center[1] - radius_point[1]) ** 2)

    # 计算正方形边界框的左上角和右下角坐标
    left_top = (circle_center[0] - radius, circle_center[1] - radius)
    right_bottom = (circle_center[0] + radius, circle_center[1] + radius)

    return [left_top, right_bottom]


def process_json_file(file_path):
    """
    读取并处理一个JSON文件。
    """
    with open(file_path, 'r') as file:
        data = json.load(file)

    # 遍历shapes,寻找圆形标注并计算正方形边界框
    for shape in data.get("shapes", []):
        if shape.get("shape_type") == "circle":
            circle_center, radius_point = shape.get("points")
            square_points = calculate_square_from_circle(circle_center, radius_point)
            shape["points"] = square_points
            shape["shape_type"] = "rectangle"  # 更新形状类型为矩形

    # 将修改后的数据写回文件
    with open(file_path, 'w') as file:
        json.dump(data, file, indent=4)


def process_all_json_files(folder_path):
    """
    遍历文件夹中的所有JSON文件并处理它们。
    """
    for file_name in os.listdir(folder_path):
        if file_name.endswith('.json'):
            file_path = os.path.join(folder_path, file_name)
            process_json_file(file_path)
            print(f"Processed {file_name}")


# 指定你的文件夹路径
folder_path = r'D:\GZ_草原\yuan111'
process_all_json_files(folder_path)

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值