栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python编写的绘制BoundingBox的程序

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/350837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号