JSON格式转PNG(用于语义分割数据集标签转换)
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
JSON格式转PNG(用于语义分割数据集标签转换)
需要将JSON的语义分割标签转换为图片形式的标签
from PIL import Image, ImageDraw
import json
import os
import random
def random_color():
# 生成一个随机颜色
return tuple(random.randint(0, 255) for _ in range(3))
def json_to_image(json_path, image_size, label_to_color, mode='L'):
# 读取JSON文件
with open(json_path, 'r') as f:
data = json.load(f)
# 创建一张空白图像,可以根据需要选择 'L' (灰度图) 或 'P' (8位彩色图)
image = Image.new(mode, image_size, color='white')
draw = ImageDraw.Draw(image)
# 将JSON中的标签信息映射到图像上
for shape in data['shapes']:
label = shape['label']
points = shape['points']
# 将多边形坐标映射到像素位置
polygon_points = [(int(point[0]), int(point[1])) for point in points]
# 获取标签对应的颜色,如果标签不存在于映射中,则生成一个新的颜色
color = label_to_color.setdefault(label, random_color())
# 在图像上绘制多边形
draw.polygon(polygon_points, fill=100)
return image
def batch_convert(json_folder, image_folder, output_folder, mode='L'):
# 遍历JSON文件夹中的所有文件
label_to_color = {} # 存储标签到颜色的映射
for json_file in os.listdir(json_folder):
if json_file.endswith('.json'):
json_path = os.path.join(json_folder, json_file)
# 构建对应的图像文件路径
image_file = os.path.splitext(json_file)[0] + '.jpg'
image_path = os.path.join(image_folder, image_file)
# 转换JSON到图像
result_image = json_to_image(json_path, Image.open(image_path).size, label_to_color, mode)
# 保存结果图像
output_path = os.path.join(output_folder, image_file)
result_image.save(output_path)
if __name__ == "__main__":
# 设置文件夹路径
json_folder = 'D:\dataset\\trans\labelmejson'
image_folder = 'D:\dataset\\trans\png'
output_folder = 'D:\dataset\\trans\PNGLabel'
# 批量转换为灰度图
batch_convert(json_folder, image_folder, output_folder, mode='L')
# 批量转换为8位彩色图
#batch_convert(json_folder, image_folder, output_folder, mode='P')
完成
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
7 个月前
更多推荐
已为社区贡献11条内容
所有评论(0)