EIseg 的JSON 转其他mask颜色
【非必要】
# -*- coding: utf-8 -*-
from genericpath import isfile
import json
import cv2
import numpy as np
import os
def cvt_one(json_path, img_path, save_path, label_color):
# 加载json 和 图片原图
data = json.load(open(json_path, encoding='gbk'))
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 图片二值化
# get background data
img_h = img.shape[0]
img_w = img.shape[1]
# 生产图片大小图片
points_bg = [(0, 0), (0, img_h), (img_w, img_h), (img_w, 0)]
img = cv2.fillPoly(img, [np.array(points_bg)], 0)
# 将多边形坐标绘制到图片中
for item in data:
className = item.get("name")
points = item.get("points")
img = cv2.fillPoly(img, [np.array(points, dtype=int)], label_color[className])
cv2.imwrite(save_path, img)
if __name__ == '__main__':
img_path_all = os.listdir('img_ori')
print(img_path_all)
print(len(img_path_all))
for i_img in range(len(img_path_all)):
print(i_img)
img_path = os.path.join( 'img_ori', img_path_all[i_img] )
json_path = os.path.join( 'label', img_path_all[i_img].split('.')[0] + '.json' )
if not os.path.exists(json_path):
print( '缺少图片编号JSON: %s'% (json_path) )
continue
Save_Floder = 'VOC_png'
if not os.path.isdir(Save_Floder):
os.makedirs(Save_Floder)
# 保存路径
save_path = os.path.join( Save_Floder, img_path_all[i_img].split('.')[0] + '.png' )
label_color = {
'pitaya': [128, 128, 0]
}
cvt_one(json_path, img_path, save_path, label_color)