将目标检测图像的xml标签中的目标绘制在图像中

将目标的边界框绘制在图像中,并标出真实标签
#将目标检测的xml标签中目标绘制在图像中
from future import division
import os
import xml.dom.minidom
import cv2

def read_xml(ImgPath, AnnoPath, Savepath):
imagelist = os.listdir(AnnoPath)
for image in imagelist:
image_pre, ext = os.path.splitext(image)
imgfile = ImgPath + ‘/’ + image_pre + ‘.jpg’
xmlfile = AnnoPath + ‘/’ + image_pre + ‘.xml’
im = cv2.imread(imgfile)
DomTree = xml.dom.minidom.parse(xmlfile)
annotation = DomTree.documentElement
filenamelist = annotation.getElementsByTagName(‘filename’)
filename = filenamelist[0].childNodes[0].data
objectlist = annotation.getElementsByTagName(‘object’)
for objects in objectlist:
namelist = objects.getElementsByTagName(‘name’)
objectname = namelist[0].childNodes[0].data
bndbox = objects.getElementsByTagName(‘bndbox’)

        for box in bndbox:  
            try:  
                x1_list = box.getElementsByTagName('xmin')  
                x1 = int(x1_list[0].childNodes[0].data)  
                y1_list = box.getElementsByTagName('ymin')  
                y1 = int(y1_list[0].childNodes[0].data)  
                x2_list = box.getElementsByTagName('xmax')  
                x2 = int(x2_list[0].childNodes[0].data)  
                y2_list = box.getElementsByTagName('ymax')  
                y2 = int(y2_list[0].childNodes[0].data)  

                minX = x1  
                minY = y1  
                maxX = x2  
                maxY = y2  
                #蓝色框
                color = (255, 0, 0)
                cv2.rectangle(im,(minX,minY),(maxX,maxY),color,2)  
                path = Savepath + '/' + image_pre + '.jpg'  
                font = cv2.FONT_HERSHEY_SIMPLEX  
                #红色字体
                cv2.putText(im, objectname, (minX,minY - 7), font, 0.5, (0, 0, 255), 1)  
                cv2.imwrite(path, im)  
            except Exception as e:
                print(e)

#依次为图片路径、xml文件的路径、输出图片的存放路径
read_xml(‘E:/jupyter/RSOD/RSOD_overpass’,‘E:/jupyter/RSOD/xml’,‘E:/jupyter/RSOD/overpass’)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值