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

1.初始数据介绍

对于此博客:

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

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

图片输出如下:

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

图片标注信息内容如下:


    OXIIIT
    Abyssinian_1.jpg

        OXFORD-IIIT Pet Dataset
        OXIIIT
        flickr

        600
        400
        3

    0

        cat
        Frontal
        0
        0

            333
            72
            425
            158

        0

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.结果展示

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

Original: https://blog.csdn.net/qq_44961869/article/details/116375721
Author: 水哥很水
Title: 深度学习——输出图片及其目标框

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/767934/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球