def rotate_with_bboxes(image, bboxes, degrees, replace):
    'Equivalent of PIL Rotate that rotates the image and bbox.\n\n  Args:\n    image: 3D uint8 Tensor.\n    bboxes: 2D Tensor that is a list of the bboxes in the image. Each bbox\n      has 4 elements (min_y, min_x, max_y, max_x) of type float.\n    degrees: Float, a scalar angle in degrees to rotate all images by. If\n      degrees is positive the image will be rotated clockwise otherwise it will\n      be rotated counterclockwise.\n    replace: A one or three value 1D tensor to fill empty pixels.\n\n  Returns:\n    A tuple containing a 3D uint8 Tensor that will be the result of rotating\n    image by degrees. The second element of the tuple is bboxes, where now\n    the coordinates will be shifted to reflect the rotated image.\n  '
    image = rotate(image, degrees, replace)
    image_height = tf.shape(image)[0]
    image_width = tf.shape(image)[1]
    wrapped_rotate_bbox = (lambda bbox: _rotate_bbox(bbox, image_height, image_width, degrees))
    bboxes = tf.map_fn(wrapped_rotate_bbox, bboxes)
    return (image, bboxes)
Equivalent of PIL Rotate that rotates the image and bbox.

Args:
  image: 3D uint8 Tensor.
  bboxes: 2D Tensor that is a list of the bboxes in the image. Each bbox
    has 4 elements (min_y, min_x, max_y, max_x) of type float.
  degrees: Float, a scalar angle in degrees to rotate all images by. If
    degrees is positive the image will be rotated clockwise otherwise it will
    be rotated counterclockwise.
  replace: A one or three value 1D tensor to fill empty pixels.

Returns:
  A tuple containing a 3D uint8 Tensor that will be the result of rotating
  image by degrees. The second element of the tuple is bboxes, where now
  the coordinates will be shifted to reflect the rotated image.
def rotate_with_bboxes(image, bboxes, degrees, replace):
    'Equivalent of PIL Rotate that rotates the image and bbox.\n\n  Args:\n    image: 3D uint8 Tensor.\n    bboxes: 2D Tensor that is a list of the bboxes in the image. Each bbox\n      has 4 elements (min_y, min_x, max_y, max_x) of type float.\n    degrees: Float, a scalar angle in degrees to rotate all images by. If\n      degrees is positive the image will be rotated clockwise otherwise it will\n      be rotated counterclockwise.\n    replace: A one or three value 1D tensor to fill empty pixels.\n\n  Returns:\n    A tuple containing a 3D uint8 Tensor that will be the result of rotating\n    image by degrees. The second element of the tuple is bboxes, where now\n    the coordinates will be shifted to reflect the rotated image.\n  '
    image = rotate(image, degrees, replace)
    image_height = tf.shape(image)[0]
    image_width = tf.shape(image)[1]
    wrapped_rotate_bbox = (lambda bbox: _rotate_bbox(bbox, image_height, image_width, degrees))
    bboxes = tf.map_fn(wrapped_rotate_bbox, bboxes)
    return (image, bboxes)