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