json文件格式:
目标检测数据可视化
首先解析json文件,选出对应字段信息
利用opencv工具进行画框和写出文字
import os
import os.path
import numpy as np
import xml.etree.ElementTree as xmlET
from PIL import Image, ImageDraw
import json
import cv2
img = cv2.imread("0000f77c-6257be58.jpg",cv2.COLOR_BGR2RGB)
boxes = []
with open("0000f77c-6257be58.json",'r',encoding='utf8') as fp:
json_data = json.load(fp)
# print('这是文件中的json数据:',json_data)
# print('这是读取到文件数据的数据类型:', type(json_data))
# print(len(json_data['frames'][0]["objects"]))
# print(json_data['frames'][0])
for v in json_data['frames'][0]["objects"]:
# print(v)
classname = v["category"]
try:
# print(v["box2d"])
x1 = float(v["box2d"]['x1'])
y1 = float(v["box2d"]['y1'])
x2 = float(v["box2d"]['x2'])
y2 = float(v["box2d"]['y2'])
print(x1,y1,x2,y2)
boxes.append([x1,y1,x2,y2,classname])
# 取出特定数据
except:
# print(v["poly2d"])
pass
print(boxes)
for ix in range(len(boxes)):
xmin = int(boxes[ix][0])
ymin = int(boxes[ix][1])
xmax = int(boxes[ix][2])
ymax = int(boxes[ix][3])
cv2.rectangle(img,(xmin, ymin), (xmax, ymax), color=(255, 0, 0), thickness = 4)
cv2.putText(img, boxes[ix][4], (xmin, ymin), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (255,0, 0,), 4)
cv2.imwrite("0000f77c-6257be58_result.jpg",img)
效果如下: