语义分割---mask标签转json

之前写过一篇文章,mask转json的,主要分两步:
1、将mask二值图中的目标区域轮廓,按照每个点之间的步长进行选取,并保存每个轮廓点坐标到csv文件;
2、读取csv文件,并将坐标转化为json文件。

最近在查资料的时候,发现了一篇很好的转换思路:
以0、1、2代表mask图中的类别,利用pycococreatortools工具包中的binary_mask_to_polygon函数,分别对掩码中的label绘制边界点,然后保存至json文件。
具体思路和代码,请看如下文章:
https://blog.youkuaiyun.com/zzu_zhong/article/details/131390999

### 如何将语义分割JSON文件换为MASK图像 要完成从JSON文件到MASK图像的换,可以通过解析JSON文件中的形状信息并将其绘制到空白图像上实现。以下是具体的方法: #### 解析LabelMe JSON文件 LabelMe工具生成的JSON文件通常包含了多个对象的信息,其中每个对象都有其对应的形状(shape)以及类别标签。这些形状通常是多边形形式表示目标物体的边界。 通过Python脚本读取JSON文件的内容,并提取出所有的`points`字段,即代表各个物体轮廓的坐标集合[^5]。 ```python import json import numpy as np from PIL import Image, ImageDraw def load_json(json_file): with open(json_file, 'r', encoding='utf-8') as f: data = json.load(f) return data['shapes'], data['imageWidth'], data['imageHeight'] # 加载JSON文件 json_path = "example.json" shapes, image_width, image_height = load_json(json_path) print(f"Image Size: {image_width}x{image_height}") ``` #### 创建空白MASK图像 创建一个与原始图片尺寸相同的空白图像作为基础MASK图像。此图像初始值全设为背景类别的索引号(一般为0)。 ```python def create_blank_mask(width, height, num_classes=2): mask = np.zeros((height, width), dtype=np.uint8) return mask mask_image = create_blank_mask(image_width, image_height) ``` #### 绘制多边形至MASK图像 对于每一个从JSON文件中获取的对象,依据其类别标签赋予相应的数值填充到MASK图像对应位置上去。这里假设我们只处理两类情况——前景和背景;如果有更多分类,则需要调整函数逻辑以适应不同类别数目的需求[^4]。 ```python def draw_polygon(mask, points, class_id): img = Image.fromarray(mask, mode="L") # Convert to PIL format for drawing. drawer = ImageDraw.Draw(img) flat_points = [coord for point in points for coord in point] drawer.polygon(flat_points, outline=class_id, fill=class_id) # Draw filled polygon. return np.array(img) for shape in shapes: label = shape["label"] if label not in classes: continue class_idx = classes.index(label) mask_image = draw_polygon(mask_image, shape["points"], class_idx) ``` #### 存储最终MASK图像 最后一步是保存生成好的MASK图像以便后续使用或者验证换结果是否正确无误[^3]。 ```python output_path = "converted_mask.png" Image.fromarray(mask_image).save(output_path) print(f"Masks saved at {output_path}.") ``` 以上过程展示了如何把由LabelMe导出的JSON格式数据变为适合用于训练深度学习模型的标准MASK图像格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值