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

2025-11-25 03:22:56

批量化

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