#-*-coding:utf-8-*- # date:2020-04-11 # Author: Eric.Lee # function: common utils import os import shutil import cv2 import numpy as np import json def mkdir_(path, flag_rm=False): if os.path.exists(path): if flag_rm == True: shutil.rmtree(path) os.mkdir(path) print('remove {} done ~ '.format(path)) else: os.mkdir(path) def plot_box(bbox, img, color=None, label=None, line_thickness=None): tl = line_thickness or round(0.002 * max(img.shape[0:2])) + 1 color = color or [random.randint(0, 255) for _ in range(3)] c1, c2 = (int(bbox[0]), int(bbox[1])), (int(bbox[2]), int(bbox[3])) cv2.rectangle(img, c1, c2, color, thickness=tl)# 目标的bbox if label: tf = max(tl - 2, 1) t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] # label size c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 # 字体的bbox cv2.rectangle(img, c1, c2, color, -1) # label 矩形填充 # 文本绘制 cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 4, [225, 255, 255],thickness=tf, lineType=cv2.LINE_AA) class JSON_Encoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, np.integer): return int(obj) elif isinstance(obj, np.floating): return float(obj) elif isinstance(obj, np.ndarray): return obj.tolist() else: return super(JSON_Encoder, self).default(obj)