Python编写的绘制BoundingBox的程序
import json
import matplotlib.pyplot
import matplotlib.patches
import PIL
FilePath = "sign-plate-detection_train - format.json"
def DrawBBox(file_name,bbox):
print(bbox)
ImagesPath = "images/" + file_name
print(ImagesPath)
matplotlib.pyplot.imshow(PIL.Image.open(ImagesPath))
image = matplotlib.pyplot.gca()
rect = matplotlib.patches.Rectangle((bbox[0],bbox[1]),bbox[2],bbox[3],edgecolor='r',linewidth=2.0,facecolor='none')
image.add_patch(rect)
save_path = "test_images/"+file_name
matplotlib.pyplot.savefig(save_path)
def Draw():
FileHandle = open(FilePath, 'r', encoding='utf-8')
TrainFile = FileHandle.read()
FileHandle.close()
TrainFile = json.loads(TrainFile)
Images = TrainFile['images']
Images = sorted(Images, key=lambda r: r['id'])
Annotations = TrainFile['annotations']
Annotations = sorted(Annotations, key=lambda r: r['image_id'])
AnnotationsSize = len(Annotations)
idx=0
for TemImage in Images:
Boxes = []
while idx < AnnotationsSize:
if TemImage['id'] == Annotations[idx]['image_id']:
for i in range(len(Annotations[idx]['bbox'])):
Boxes.append(Annotations[idx]['bbox'][i])
DrawBBox(TemImage['file_name'],Boxes)
Boxes = []
idx += 1
else:
matplotlib.pyplot.clf()
break
Draw()