labelme标注转自定义mask色彩图

labelme标注后转自定义mask色彩图声明:该项目代码是基于 官网提供的 labelme_json_to_dataset.py 改进而成先看一下效果原图labelme标签图,并保存json生成的效果图再看一下代码项目结构是这样项目├─data│ ├─img #存放图片│ ├─json #存放保存的json│ └─label└─tool│ └─labelme_json_to_dataset.py│ └─tools.py└─main.py注意:库函数有个地方需要
摘要由CSDN通过智能技术生成

labelme标注后转自定义mask色彩图

声明:该项目代码是基于 官网提供的 labelme_json_to_dataset.py 改进而成
注意:labelme 的软件使用 3.16.2,否则代码无法使用

pip install labelme==3.16.2

先看一下效果

原图
在这里插入图片描述
labelme标签图,并保存json
在这里插入图片描述

生成的效果图
在这里插入图片描述

再看一下代码

项目结构是这样
项目
├─data
│ ├─img #存放图片
│ ├─json #存放保存的json
│ └─label
└─tool
│ └─labelme_json_to_dataset.py
│ └─tools.py
└─main.py

tools.py

from functools import reduce
import numpy as np
import cv2
import math

# 通过类别数, 通道数, 通道最大值
# 自动生成最合适的 颜色组合
def getColorCombinations(classnum = 32, colornum = 3, valuetop = 255):
    '''
    :param classnum: 类别数
    :param colornum: 通道数
    :param colornum: 通道最大值 max
    :return: 返回该类别合适的"颜色组合"
    '''
    step = math.ceil(classnum / colornum)
    step = math.ceil(step / colornum) # 获取单通道的间隙数
    gap = math.floor(valuetop/step) # 获取间隙值

    steplist = list(range(step + 1))
    steplist = [str(x) for x in steplist] # 间隙数变 str, 为了执行下面的 可重复全排列语句

    # 可重复全排列(对 steplist 中的值, 生成 colornum 长度的全排列)
    ret = reduce(lambda x, y: [z0 + z1 for z0 in x for z1 in y], [steplist] * colornum)

    fun = lambda num: [int(i) * gap for i in num] # str 转 int, 并映射至 0 - valuetop
    steplist = [fun(x) for x in ret]
    return steplist[:classnum] # 截取至类别数长度


if __name__ == '__main__':
    ...
    #######################################################
    ### 自动生成合适的颜色组合
    # ret = getColorCombinations(32, 3, 255)

labelme_json_to_dataset.py

import argparse
import base64
import json
import os
import os.path as osp
import warnings
import PIL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Labelme标注输出的mask默认是黑白的,即只有两种颜色,分别代表目标区域和背景区域。但是,如果我们看到的mask是彩色的,那是因为它用调色板的形式去存储的,针对255个像素,每个像素都对应了一个颜色。这样做的目的是为了方便可视化和观察标注结果。所以,虽然mask在存储时是彩色的,但实际上它仍然是基于黑白的二值像。在使用Labelme进行标注后,会生成一个json文件,其中包含了标注的信息和对应的mask像。在物体分割任务中,我们可以读取这个json文件,提取出对应的mask像,并将其化为二值像。然后,可以将这些化为tensor,以便在模型中进行训练。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Labelme标注的数据集为VOC2007](https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/12372055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [为什么数据集中的mask是彩色的?](https://blog.csdn.net/candice5566/article/details/127984846)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [labelme标注的json文件变成每个类别一张黑白mask](https://blog.csdn.net/m0_48095841/article/details/128397443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI_潜行者

赐予我力量吧

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

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

打赏作者

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

抵扣说明:

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

余额充值