给我一个python代码将label中标注的json文件,转化为可用于分割训练的标签二值化黑白png图片
时间: 2023-04-01 22:03:59 浏览: 168
可以使用以下Python代码将标注的JSON文件转换为二值化的黑白PNG图像:
```python
import json
import numpy as np
from PIL import Image
# 读取JSON文件
with open('label.json', 'r') as f:
label = json.load(f)
# 获取图像大小
width = label['size']['width']
height = label['size']['height']
# 创建一个空白图像
img = np.zeros((height, width), dtype=np.uint8)
# 遍历每个对象
for obj in label['objects']:
# 获取对象的形状
shape = obj['shape_attributes']
# 如果是多边形
if shape['name'] == 'polygon':
# 获取多边形的顶点坐标
points = [(shape['all_points_x'][i], shape['all_points_y'][i]) for i in range(len(shape['all_points_x']))]
# 将多边形填充到图像中
Image.fromarray(img).draw.polygon(points, fill=1)
# 如果是矩形
elif shape['name'] == 'rect':
# 获取矩形的左上角和右下角坐标
x1, y1, x2, y2 = shape['x'], shape['y'], shape['x'] + shape['width'], shape['y'] + shape['height']
# 将矩形填充到图像中
Image.fromarray(img).draw.rectangle((x1, y1, x2, y2), fill=1)
# 保存图像
Image.fromarray(img).save('label.png')
```
其中,`label.json`是标注的JSON文件,`label.png`是生成的二值化黑白PNG图像。这段代码会遍历JSON文件中的每个对象,将多边形和矩形填充到空白图像中,并保存为PNG图像。
阅读全文