ML Community Day is November 9! Join us for updates from TensorFlow, JAX, and more Learn more


Crops an image to a specified bounding box.

Used in the notebooks

Used in the tutorials

This op cuts a rectangular bounding box out of image. The top-left corner of the bounding box is at offset_height, offset_width in image, and the lower-right corner is at offset_height + target_height, offset_width + target_width.

Example Usage:

image = tf.constant(np.arange(1, 28, dtype=np.float32), shape=[3, 3, 3])
image[:,:,0] # print the first channel of the 3-D tensor
<tf.Tensor: shape=(3, 3), dtype=float32, numpy=
array([[ 1.,  4.,  7.],
       [10., 13., 16.],
       [19., 22., 25.]], dtype=float32)>
cropped_image = tf.image.crop_to_bounding_box(image, 0, 0, 2, 2)
cropped_image[:,:,0] # print the first channel of the cropped 3-D tensor
<tf.Tensor: shape=(2, 2), dtype=float32, numpy=
array([[ 1.,  4.],
       [10., 13.]], dtype=float32)>

image 4-D Tensor of shape [batch, height, width, channels] or 3-D Tensor of shape [height, width, channels].
offset_height Vertical coordinate of the top-left corner of the bounding box in image.
offset_width Horizontal coordinate of the top-left corner of the bounding box in image.
target_height Height of the bounding box.
target_width Width of the bounding box.

If image was 4-D, a 4-D Tensor of shape [batch, target_height, target_width, channels]. If image was 3-D, a 3-D Tensor of shape [target_height, target_width, channels]. It has the same dtype with image.

ValueError image is not a 3-D or 4-D Tensor.
ValueError offset_width < 0 or offset_height < 0.
ValueError target_width <= 0 or target_width <= 0.
ValueError width < offset_width + target_width or height < offset_height + target_height.