You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从含填充圆形多边形的JSON文件生成对应掩码图像

自定义多边形标注JSON适配掩码生成方法

格式差异说明

现有LabelMe格式转掩码函数要求输入的多边形结构满足:

  • 多边形列表存储在字典的shapes字段
  • 列表内每个元素是字典,通过points键存储坐标点,坐标格式为[[x,y], [x,y], ...]的嵌套数值列表

你的f90.json存储结构差异:

  • 多边形列表存储在polygons字段
  • 每个多边形是字符串格式:点之间用空格分隔,单个点的x、y坐标用逗号分隔,没有预解析为数值结构

只需要先把字符串格式的坐标解析为LabelMe函数要求的结构,就能直接复用现有代码生成掩码。

具体实现代码

保留你已有的掩码生成函数,新增JSON解析逻辑即可,完整代码如下:

import json
import numpy as np
from PIL import Image, ImageDraw
import matplotlib.pyplot as plt

# 原有LabelMe格式多边形转掩码函数,无需修改
def polygons_to_mask_array_labelme(polygons, width : int = 300, height : int = 300) -> np.ndarray:
    '''
    输入多边形列表生成二值掩码
    入参polygons格式要求:每个元素为字典,包含points键存储[[x,y],...]格式的坐标点
    '''
    img = Image.new('L', (width, height), 0)    
    for polygon in polygons:
        nested_lst_of_tuples = [tuple(l) for l in polygon['points']]
        try:
            ImageDraw.Draw(img).polygon(nested_lst_of_tuples, outline=1, fill=1)
        except:
            print(nested_lst_of_tuples)
    mask = np.array(img)
    return mask

# --------------- f90.json格式解析逻辑 ---------------
with open('f90.json', encoding='utf-8') as f:
    raw_data = json.load(f)

# 把字符串格式的多边形转换为LabelMe兼容的结构
parsed_polygons = []
for poly_str in raw_data['polygons']:
    # 按空格拆分得到每个点的字符串
    point_str_list = poly_str.split(' ')
    points = []
    for point_str in point_str_list:
        # 按逗号拆分x、y,转成浮点数
        x, y = point_str.split(',')
        points.append([float(x), float(y)])
    # 组装成原有函数要求的字典格式
    parsed_polygons.append({'points': points})

# 调用原有函数生成掩码,注意替换为对应图像的实际宽高
# 示例中根据给出的坐标最大值设置宽600、高400,可根据实际情况调整
mask = polygons_to_mask_array_labelme(parsed_polygons, width=600, height=400)

# 可视化查看结果
plt.imshow(mask, cmap='gray')
plt.show()

# 保存掩码可取消下方注释
# Image.fromarray(mask*255).save('mask.png')

注意事项

  • 代码里的width和height参数需要替换为对应原图的实际尺寸,否则生成的掩码会和原图位置不匹配
  • 解析逻辑自动处理了浮点型坐标,PIL的绘制接口原生支持浮点坐标输入,不需要额外转整数
  • 如果JSON后续新增其他字段,只需要调整对应字段读取逻辑即可,掩码生成核心函数不需要修改

内容的提问来源于stack exchange,提问作者user18115377

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:06:20