python读取xml信息和图片,用cv2标注图片

import os
import xml.dom.minidom
import cv2 as cv

ImgPath = '/home/newbee/CODEs/CSRNet-pytorch-master/train/images/'
AnnoPath = '/home/newbee/CODEs/CSRNet-pytorch-master/train/xmls/'

imagelist = os.listdir(ImgPath)
for image in imagelist:

    image_pre, ext = os.path.splitext(image)
    imgfile = ImgPath + image
    xmlfile = AnnoPath + image_pre + '.xml'

    #打开xml文档
    DOMTree = xml.dom.minidom.parse(xmlfile)
    #得到文档元素对象
    collection = DOMTree.documentElement
    #读取图片
    img = cv.imread(imgfile)

    filenamelist = collection.getElementsByTagName("filename")
    filename = filenamelist[0].childNodes[0].data
    print(filename)
    #得到标签名为object的信息
    objectlist = collection.getElementsByTagName("object")

    for objects in objectlist:
        #每个object中得到子标签名为name的信息
        namelist = objects.getElementsByTagName(
Python中使用OpenCV库读取标注XML文件并将标注框和类别绘制到图片上,可以按照以下步骤进行: 1. 使用`cv2`库读取图片。 2. 使用`xml.etree.ElementTree`或其他XML解析库读取XML文件中的标注信息。 3. 遍历XML文件中的每一个标注对象,获取其位置和类别信息。 4. 使用`cv2.rectangle`和`cv2.putText`函数在图片上绘制矩形框和类别文本。 下面是一个简单的代码示例: ```python import cv2 import xml.etree.ElementTree as ET # 读取图片 image = cv2.imread('path_to_image.jpg') # 解析XML文件 tree = ET.parse('path_to_annotation.xml') root = tree.getroot() # 遍历每个标注对象 for obj in root.findall('object'): # 获取类别名称 name = obj.find('name').text # 获取标注框的坐标信息 bndbox = obj.find('bndbox') xmin = int(bndbox.find('xmin').text) ymin = int(bndbox.find('ymin').text) xmax = int(bndbox.find('xmax').text) ymax = int(bndbox.find('ymax').text) # 在图片上绘制矩形框 cv2.rectangle(image, (xmin, ymin), (xmax, ymax), (0, 255, 0), 2) # 在矩形框旁边绘制类别名称 cv2.putText(image, name, (xmin, ymin - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) # 显示图片 cv2.imshow('Image with annotations', image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个代码中,`path_to_image.jpg`是你要绘制标注图片路径,`path_to_annotation.xml`是对应的标注XML文件路径。XML文件应包含相应的`object`、`name`、`bndbox`等标签信息
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值