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

如何将Label-Studio的RLE标签转为黑白图像掩码并生成image.png

Label-Studio RLE标签转黑白掩码图像教程

给定如下格式的Label-Studio RLE标签数组(完整数据包含完整的rle序列):

[{"format": "rle", "rle": [0, 18, 192, 0, 57, 27, 255, 255, 255, 0, 259, 96, 17, 192, 97, 255, 248, 239, 227, 16, 2....., 255, 142, 3, 130, 21, 128, 0], "brushlabels": ["crack"], "original_width": 640, "original_height": 480}]

如何将其转换为黑白图像掩码并生成image.png?

解决步骤

1. 安装依赖库

执行以下命令安装处理图像和数组所需的工具:

pip install numpy pillow

2. 编写转换代码

Label-Studio的RLE格式是游程编码:每两个元素为一组,第一个值代表连续背景(黑色,像素值0)的长度,第二个值代表连续前景(白色,像素值255,对应crack标签)的长度,以此类推。以下代码可直接完成转换:

import numpy as np
from PIL import Image

# 替换为你的Label-Studio标签数据
label_data = [{"format": "rle", "rle": [0, 18, 192, 0, 57, 27, 255, 255, 255, 0, 259, 96, 17, 192, 97, 255, 248, 239, 227, 16, 2, 255, 142, 3, 130, 21, 128, 0], "brushlabels": ["crack"], "original_width": 640, "original_height": 480}]

# 提取核心参数
rle_seq = label_data[0]['rle']
img_width = label_data[0]['original_width']
img_height = label_data[0]['original_height']

# 展开RLE序列为一维像素数组
flat_mask = []
for idx in range(0, len(rle_seq), 2):
    # 添加连续背景像素
    flat_mask.extend([0] * rle_seq[idx])
    # 添加连续前景像素,避免索引越界
    if idx + 1 < len(rle_seq):
        flat_mask.extend([255] * rle_seq[idx+1])

# 确保像素总数与图像尺寸匹配
total_pixels = img_width * img_height
flat_mask = flat_mask[:total_pixels] + [0] * (total_pixels - len(flat_mask))

# 转换为二维图像矩阵并保存
mask_array = np.array(flat_mask, dtype=np.uint8).reshape((img_height, img_width))
mask_img = Image.fromarray(mask_array)
mask_img.save('image.png')

代码说明

  • 遍历RLE序列,按组解析背景和前景的连续长度,展开为一维像素数组
  • 处理RLE序列可能的长度偏差,确保最终像素总数等于图像宽高的乘积
  • 通过numpy将一维数组转为对应尺寸的二维图像矩阵,最后用PIL保存为PNG格式的黑白掩码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:56:02