labelme更改颜色设置和批量处理

批量化

1.把json生成mask图片

import os

path = r"E:\code\DL\demoTest\cutImage\maskJson"
json_file = os.listdir(path)
os.system("activate labelme")


for file in json_file:
    os.system("labelme_json_to_dataset.exe %s" % os.path.join(path,file))

把上述代码存入change_json.py,期中path是图片和json文件在一个文件夹下的路径。
把这个change_json.py文件放到 D:\Anacanda\envs\labelme\Scripts文件夹下,通过命令框运行(注意!在window下是要通过Anaconda Prompt命令行进入Anacanda\envs\labelme\Scripts中运行change_json.py文件),然后结果文件夹会在json同级目录生成。

2.改生成的mask名字,因为一般我们需要的是原始图片和mask同名的

--coding:utf-8--

把label.png改名为需要的对应名字

#-*-coding:utf-8-*-
# 把label.png改名为1.png
import os

for root, dirs, names in os.walk(r'F:\esoImage\thirdBatchDataCuted'):   # 改成你自己的json文件夹所在的目录
    for dr in dirs:
        file_dir = os.path.join(root, dr)
        print(dr)
        if os.path.isdir(file_dir):
            file = os.path.join(file_dir, 'label.png')
            # print(file)
            new_name = dr.split('_')[0]  + '.png'
            new_file_name = os.path.join(file_dir, new_name)
            os.rename(file, new_file_name)




3.把mask结果汇总

coding=utf-8
import os
import shutil
from PIL import Image


 ## 目标文件夹,此处为相对路径,也可以改为绝对路径
determination = r'C:\Users\chen\Desktop\DataReduction\summery\mask'
if not os.path.exists(determination):
    os.makedirs(determination)

# 源文件夹路径
# coding=utf-8
import os
import shutil
from PIL import Image


# 目标文件夹,此处为相对路径,也可以改为绝对路径
determinationMask = r'F:\esoImage\mask'
if not os.path.exists(determinationMask):
    os.makedirs(determinationMask)

determinationOrigImage = r'F:\esoImage\image'
if not os.path.exists(determinationOrigImage):
    os.makedirs(determinationOrigImage)

# 源文件夹路径
path = r'F:\esoImage\thirdBatchDataCuted'

# 收集原始图片
# pngFiles = [bmp for bmp in os.listdir(path) if bmp.endswith(".png")]
# print()
# for bmp in pngFiles:
#     # dir.split("_")[0]+".png"
#     pngPath = os.path.join(path, bmp)
#     img = Image.open(pngPath)
#     shutil.copy(pngPath, os.path.join(determinationOrigImage, bmp))


# 收集mask图片

for root, dirs, names in os.walk(r'F:\esoImage\thirdBatchDataCuted'):   # 改成你自己的json文件夹所在的目录
    for dr in dirs:
        file_dir = os.path.join(root, dr)
        print(dr)
        if os.path.isdir(file_dir):
            # file = os.path.join(file_dir, 'label.png')
            # print(file)
            new_name = dr.split('_')[0]  + '.png'
            new_file_name = os.path.join(file_dir, new_name)
            # os.rename(file, new_file_name)
            shutil.copy(new_file_name, os.path.join(determinationMask, new_name))



参考:https://blog.csdn.net/msncyt123/article/details/125359080

改变标签颜色(也可以对原始生成的图片,把红色替换成白的)

此处指的是labelme5.0.2版本

改背景

i = np.repeat(i[:, None], 8, axis=1)
i = np.right_shift(i, np.arange(0, 24, 3)).astype(np.uint8)
j = np.arange(8)[::-1]
r = np.bitwise_or.reduce(np.left_shift(bitget(i, 0), j), axis=1)
g = np.bitwise_or.reduce(np.left_shift(bitget(i, 1), j), axis=1)
b = np.bitwise_or.reduce(np.left_shift(bitget(i, 2), j), axis=1)
r=np.full_like(r,255)#这里255,0,0三个数字可以随便改,改成你所指定的颜色
g=np.full_like(g,0)
b=np.full_like(b,0)

指定不同标签的不同颜色

r = np.bitwise_or.reduce(np.left_shift(bitget(i, 0), j), axis=1)
g = np.bitwise_or.reduce(np.left_shift(bitget(i, 1), j), axis=1)
b = np.bitwise_or.reduce(np.left_shift(bitget(i, 2), j), axis=1)
    
cmap = np.stack((r, g, b), axis=1).astype(np.uint8)
cmap[1, :] = [0,255,0]  # 种类1的颜色
cmap[2, :] = [255,0,0]  # 种类2的颜色,可以改变指定颜色或添加更多指定种类

转载:https://blog.csdn.net/qq_41776136/article/details/115568341

作者:静默虚空
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

posted @   Chenyi_li  阅读(2586)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示