lableme 自带的json_to_dataset.py 文件可以生成单个的.png文件,但是当标注的图片较多时,需要具备批量化转化功能:
from PIL import Image, ImageDraw
import json
import os
# 定义标签到颜色的映射,例如:'leakage' 对应 (255, 0, 0) 表示红色
label_to_color = {
'leakage': (128, 0, 0),
# 在这里添加更多标签和颜色
}
# 定义输入JSON文件夹和输出PNG文件夹
input_folder = 'D:/UserData/Desktop/1/json' # 将此路径替换为包含JSON文件的文件夹路径
output_folder = 'D:/UserData/Desktop/1/png' # 将此路径替换为要保存PNG文件的文件夹路径
# 确保输出文件夹存在,如果不存在则创建
if not (output_folder):
(output_folder)
# 循环处理输入文件夹中的每个JSON文件
for json_filename in (input_folder):
if json_filename.endswith('.json'):
# 构建输入JSON文件的完整路径
json_file_path = (input_folder, json_filename)
# 读取JSON文件内容
with open(json_file_path, 'r') as json_file:
data = (json_file)
# 获取图像尺寸和标注
img_width = data['imageWidth']
img_height = data['imageHeight']
shapes = data['shapes']
# 创建一个空白的PNG图像
img = ('RGB', (img_width, img_height), (0, 0, 0))
draw = (img)
# 在图像上绘制每个标注
for shape in shapes:
label = shape['label']
points = shape['points']
polygon = [(x, y) for x, y in points]
# 使用颜色映射来确定填充颜色
if label in label_to_color:
fill_color = label_to_color[label]
(polygon, fill=fill_color)
else:
print(f"警告:未知标签 '{label}',将使用默认颜色绘制。")
# 构建输出PNG文件的完整路径
output_filename = (json_filename)[0] + '.png'
output_path = (output_folder, output_filename)
# 保存PNG图像
(output_path, 'PNG')
print(f'转换: {json_file_path} -> {output_path}')
print('转换完成!')
在这里只需要修改
input_folder = 'D:/UserData/Desktop/1/json' # 将此路径替换为包含JSON文件的文件夹路径
output_folder = 'D:/UserData/Desktop/1/png' # 将此路径替换为要保存PNG文件的文件夹路径
对应的文件夹路径即可