Функция image.crop_to_bounding_box
Функция crop_to_bounding_box обрезает изображение до заданной прямоугольной области. Первым параметром передается тензор изображения, вторым и третьим - координаты верхнего левого угла рамки по вертикали и горизонтали, четвертым и пятым - высота и ширина области обрезки. Изображение может быть трехмерным (высота, ширина, каналы) или четырехмерным (пакет, высота, ширина, каналы).
Синтаксис
tf.image.crop_to_bounding_box(
image,
offset_height,
offset_width,
target_height,
target_width
)
Пример
Давайте обрежем изображение размером 5 на 5 до области, начиная с позиции 1, 1 с высотой 3 и шириной 3:
import tensorflow as tf
image = tf.constant([
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]
], dtype=tf.float32)
image = tf.expand_dims(image, axis=-1)
res = tf.image.crop_to_bounding_box(image, 1, 1, 3, 3)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[ 7.]
[ 8.]
[ 9.]]
[[12.]
[13.]
[14.]]
[[17.]
[18.]
[19.]]], shape=(3, 3, 1), dtype=float32)
Пример
Давайте обрежем цветное изображение с тремя каналами:
import tensorflow as tf
image = tf.constant([
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],
[[13, 14, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24]],
[[25, 26, 27], [28, 29, 30], [31, 32, 33], [34, 35, 36]],
[[37, 38, 39], [40, 41, 42], [43, 44, 45], [46, 47, 48]]
], dtype=tf.uint8)
res = tf.image.crop_to_bounding_box(image, 1, 1, 2, 2)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[16 17 18]
[19 20 21]]
[[28 29 30]
[31 32 33]]], shape=(2, 2, 3), dtype=uint8)
Пример
Давайте обрежем пакет из двух изображений:
import tensorflow as tf
image = tf.constant([
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
],
[
[17, 18, 19, 20],
[21, 22, 23, 24],
[25, 26, 27, 28],
[29, 30, 31, 32]
]
], dtype=tf.float32)
image = tf.expand_dims(image, axis=-1)
res = tf.image.crop_to_bounding_box(image, 0, 0, 2, 2)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[ 1.]
[ 2.]]
[[ 5.]
[ 6.]]]
[[[17.]
[18.]]
[[21.]
[22.]]]], shape=(2, 2, 2, 1), dtype=float32)
Смотрите также
-
функцию
pad_to_bounding_box,
которая дополняет изображение до размеров рамки -
функцию
central_crop,
которая обрезает центральную часть изображения -
функцию
resize_with_crop_or_pad,
которая изменяет размер изображения с обрезкой или дополнением -
функцию
resize,
которая изменяет размер изображения