import json
import cv2
import numpy as np
import os
for file in os.listdir('/home/lixuan/workspace/dataset/icecreamtwo/labelme_train/json'):
img = cv2.imread('/home/lixuan/workspace/dataset/icecreamtwo/labelme_train/jpg/{}'.format(file.replace('json','jpg')))
with open('/home/lixuan/workspace/dataset/icecreamtwo/labelme_train/json/{}'.format(file)) as f:
dict = json.load(f)
shapes = dict['shapes']
PointsNone = []
Pointsgroup = {}
for shape in shapes:
label = shape['label']
group_id = shape['group_id']
points = shape['points']
points = np.array(points, dtype=np.int)
if group_id == None:
Dict = {}
Dict['label'] = label
Dict['points'] = points
PointsNone.append(Dict)
else:
if Pointsgroup.get(group_id) == None:
Pointsgroup[group_id] = {}
Pointsgroup[group_id]['label'] = label
Pointsgroup[group_id]['points'] = []
Pointsgroup[group_id]['points'].append(points)
else:
Pointsgroup[group_id]['points'].append(points)
if not os.path.exists('/home/lixuan/workspace/dataset/icecreamtwo/labelme_train/masks/{}'.format(file.split('.')[0])):
os.mkdir('/home/lixuan/workspace/dataset/icecreamtwo/labelme_train/masks/{}'.format(file.split('.')[0]))
for number in Pointsgroup:
balck = np.zeros_like(img)
label = Pointsgroup[number]['label']
Points = Pointsgroup[number]['points']
for points in Points:
black = cv2.fillConvexPoly(balck,points, (255, 255, 255))
cv2.imwrite('/home/lixuan/workspace/dataset/icecreamtwo/labelme_train/masks/{}/{}-{}.jpg'.format(file.split('.')[0],number,label),balck)
count = 0
for index,poly in enumerate(PointsNone):
label = poly['label']
points = poly['points']
balck = np.zeros_like(img)
black = cv2.fillConvexPoly(balck, points, (255, 255, 255))
cv2.imwrite('/home/lixuan/workspace/dataset/icecreamtwo/labelme_train/masks/{}/None-{}-{}.jpg'.format(file.split('.')[0],label,count),balck)
count += 1
labelme json转图片
最新推荐文章于 2024-04-22 16:07:30 发布