Python编写的绘制BoundingBox的程序

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
    #遍历图片列表 找出对应的boundbox
    for TemImage in Images:     
        Boxes = []
        
        #遍历Annotations
        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()
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值