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
作者:静默虚空
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)