深度学习——输出图片及其目标框

1.初始数据介绍

对于此博客:

图片路径为:datasets/images/Abyssinian_1.jpg

图片标准信息路径为:datasets/annotations/xmls/Abyssinian_1.xml

图片输出如下:

图片标注信息内容如下:

<annotation>
    <folder>OXIIIT</folder>
    <filename>Abyssinian_1.jpg</filename>
    <source>
        <database>OXFORD-IIIT Pet Dataset</database>
        <annotation>OXIIIT</annotation>
        <image>flickr</image>
    </source>
    <size>
        <width>600</width>
        <height>400</height>
        <depth>3</depth>
    </size>
    <segmented>0</segmented>
    <object>
        <name>cat</name>
        <pose>Frontal</pose>
        <truncated>0</truncated>
        <occluded>0</occluded>
        <bndbox>
            <xmin>333</xmin>
            <ymin>72</ymin>
            <xmax>425</xmax>
            <ymax>158</ymax>
        </bndbox>
        <difficult>0</difficult>
    </object>
</annotation>

2.图片文件的读取与解析

本次使用tensorflow2.4.0版本的内置函数对于该图片进行读取以及解码的操作,具体代码如下:

import tensorflow as tf

image = tf.io.read_file('datasets/images/Abyssinian_1.jpg')   # 从文件路径中读取图片的内容
image = tf.image.decode_jpeg(image)  # 由于图片是jpg格式的,对其进行解码操作

3.图片标注信息的读取与解析

对于图片标注信息中,我们需要关注的是bndbox中的内容,里面对应的是标注目标框的左下角(xmin,ymin)与右上角(xmax,ymax)的两个坐标。解析这两个左边的代码如下:

from lxml import etree
xml = open('datasets/annotations/xmls/Abyssinian_1.xml').read()
sel = etree.HTML(xml)
width = int(sel.xpath('//size/width/text()')[0])
height = int(sel.xpath('//size/height/text()')[0])
x_min = int(sel.xpath('//bndbox/xmin/text()')[0])
x_max = int(sel.xpath('//bndbox/xmax/text()')[0])
y_min = int(sel.xpath('//bndbox/ymin/text()')[0])
y_max = int(sel.xpath('//bndbox/ymax/text()')[0])

4.在图片上绘制对应的标注信息

对应绘制标注信息代码如下:

from matplotlib import pyplot as plt
from matplotlib.patches import Rectangle

plt.imshow(image)
rect = Rectangle(xy=(x_min, y_min), width=(x_max - x_min), height=(y_max - y_min), fill=False, color='red')
ax = plt.gca()
ax.axes.add_patch(rect)
plt.show()

其中对于Rectangle()函数的参数解释如下:

xy=         由于我们绘制的是一个矩形,这里对应的是图片中矩形的左下角点的坐标值

width=    这个属性代表我们想要绘制矩形的宽度,我们运用x_max-x_min间接求得

height=   这个属性代表我们想要绘制矩形的高度,我们运用y_max-y_min间接求得

fill=          这个属性代表矩形是否进行内部填充,因为我们只想绘制一个矩形的框,而不是内部被填充的矩形,所以我们把他置为False

color=     这个属性代表我们绘制矩形的颜色,这里我们选择绘制一个红色的矩形

5.结果展示

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水哥很水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值