图像处理:处理标注框(tf.image.draw_bounding_boxes(batched, boxes))

在很多图像识别的数据集中,图像中需要关注的物体通常会被标注框圈出来,tsnroflow提供了一些工具来处理标注框。使用的function是: result = tf.image.draw_bounding_boxes(batched, boxes)

boxes = tf.constant([[[0.125, 0.125, 0.9, 0.9], [0.375, 0.375, 0.75, 0.75]]])
result = tf.image.draw_bounding_boxes(batched, boxes)

给出每一张图像的所有标注框。一个标注框有四个数字,分别代表[ Ymin,Xmin,Ymax,Xmax]
每一个值都在 [0,1] 之间。即标注框的位置。处理结果如下图:
在这里插入图片描述

# 处理标注框
"""
在很多图像识别的数据集中,图像中需要关注的物体通常会呗标注框圈出来,tsnroflow提供了一些工具来处理标注框。下面这段代
码展示了如何通过 tf.image.draw_bounding_boxes函数在图像中加入标注框
"""
# matplotlib.pyplot 是一个python的画图工具。可以可视化tensorflow对图像的处理过程
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np

# 读取图像的原始数据
image_raw_data = tf.gfile.FastGFile('/lena.jpg', 'rb').read()

with tf.Session() as sess:
    # 将图像使用JPEG的格式解码从而得到图像对应的三维矩阵。Tensorflow还提供了 tf.image.decode_png函数对png格式的图像进行编码。
    # 解码之后的结果为一个张量, 在使用他的取值之前需要明确调用运行的过程。
    image_data = tf.image.decode_jpeg(image_raw_data)
    # Decode a JPEG-encoded image to a uint8 tensor 所以这里的 image_data 已经是一个tsnsor

    # tf.image.draw_bounding_boxes函数要求图像矩阵中的数字为实数,所以需要先将图像矩阵转化为实数类型。
    # tf.image.draw_bounding_boxes函数图像的输入是一个batch的数据,也就是多张图像组成的四维矩阵,所以需要将解码之后的图像
    # 矩阵加一维。
    batched = tf.expand_dims(
        tf.image.convert_image_dtype(image_data, tf.float32), 0
    )
    # 给出每一张图像的所有标注框。一个标注框有四个数字,分别代表[ Ymin,Xmin,Ymax,Xmax]
    boxes = tf.constant([[[0.125, 0.125, 0.9, 0.9], [0.375, 0.375, 0.75, 0.75]]])
    result = tf.image.draw_bounding_boxes(batched, boxes)
    result = tf.reduce_sum(result, 0)  # 这里显示的时候需要进行降维处理
    plt.imshow(result.eval())
    plt.show()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值