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

浙公网安备 33010602011771号