message: Register `DrawBoundingBoxV2` op in image_ops.cc
diff: @@ -594,6 +594,39 @@ REGISTER_OP("DrawBoundingBoxes")
  return shape_inference::UnchangedShape(c);
  });
  +// --------------------------------------------------------------------------
  +REGISTER_OP("DrawBoundingBoxesV2")
  + .Input("images: T")
  + .Input("boxes: float")
  + .Input("colors: float")
  + .Output("output: T")
  + .Attr("T: {float, half} = DT_FLOAT")
  + .SetShapeFn([](InferenceContext* c) {
  + return shape_inference::UnchangedShapeWithRankAtLeast(c, 3);
  + })
  + .Doc(R"doc(
  +Draw bounding boxes on a batch of images.
  +
  +Outputs a copy of `images` but draws on top of the pixels zero or more bounding
  +boxes specified by the locations in `boxes`. The coordinates of the each
  +bounding box in `boxes` are encoded as `[y_min, x_min, y_max, x_max]`. The
  +bounding box coordinates are floats in `[0.0, 1.0]` relative to the width and
  +height of the underlying image.
  +
  +For example, if an image is 100 x 200 pixels (height x width) and the bounding
  +box is `[0.1, 0.2, 0.5, 0.9]`, the upper-left and bottom-right coordinates of
  +the bounding box will be `(40, 10)` to `(100, 50)` (in (x,y) coordinates).
  +
  +Parts of the bounding box may fall outside the image.
  +
  +images: 4-D with shape `[batch, height, width, depth]`. A batch of images.
  +boxes: 3-D with shape `[batch, num_bounding_boxes, 4]` containing bounding
  + boxes.
  +colors: 2-D. A list of RGBA colors to cycle through for the boxes.
  +output: 4-D with the same shape as `images`. The batch of input images with
  + bounding boxes drawn on the images.
  +)doc");
  +
  // --------------------------------------------------------------------------
  REGISTER_OP("SampleDistortedBoundingBox")
  .Input("image_size: T")
  