Функция draw_bounding_boxes
Функция draw_bounding_boxes применяется к
изображениям для визуализации ограничивающих
рамок. Первым параметром передается тензор
изображения, вторым - тензор с координатами
рамок. Дополнительно можно передать цвета
рамок, текстовые метки и толщину линий.
Изображение должно иметь тип
uint8 или float32 и форму
[height, width, channels] для одного
изображения или
[batch, height, width, channels] для
пакета. Координаты рамок задаются в формате
[y_min, x_min, y_max, x_max] и могут
быть нормализованы в диапазоне от 0
до 1.
Синтаксис
tf.image.draw_bounding_boxes(
images,
boxes,
colors=None,
texts=None,
font_size=10,
line_thickness=1,
rectangle_position='',
name=None
)
Пример
Давайте создадим изображение и нарисуем
на нем одну рамку с координатами от
10 до 50 по обоим осям:
import tensorflow as tf
image = tf.zeros([100, 100, 3], dtype=tf.uint8)
boxes = tf.constant([[0.1, 0.1, 0.5, 0.5]])
res = tf.image.draw_bounding_boxes(
tf.expand_dims(image, 0),
tf.expand_dims(boxes, 0)
)
print(res.shape)
Результат выполнения кода:
(1, 100, 100, 3)
Пример
Давайте нарисуем две рамки с разными цветами и текстовыми метками:
import tensorflow as tf
image = tf.zeros([100, 100, 3], dtype=tf.uint8)
boxes = tf.constant([[
[0.1, 0.1, 0.4, 0.4],
[0.5, 0.5, 0.9, 0.9]
]])
colors = tf.constant([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]])
texts = tf.constant([['abcde', 'model.keras']])
res = tf.image.draw_bounding_boxes(
tf.expand_dims(image, 0),
boxes,
colors=colors,
texts=texts
)
print(res.shape)
Результат выполнения кода:
(1, 100, 100, 3)
Смотрите также
-
функцию
crop_to_bounding_box,
которая обрезает изображение по рамке -
функцию
pad_to_bounding_box,
которая дополняет изображение до рамки -
функцию
non_max_suppression,
которая фильтрует пересекающиеся рамки -
функцию
combined_non_max_suppression,
которая выполняет пакетную фильтрацию рамок