tf.image.crop_and_resize(
image,
boxes,
box_ind,
crop_size,
method='bilinear',
extrapolation_value=0,
name=None
)
从输入图像张量中提取crop(裁剪),并双线调整它们的大小(可能高宽比变化),到由crop_size指定的通用输出大小。这比从输入图像中提取固定大小切片并且不允许调整大小或宽高比变化的crop_to_bounding_box操作更普遍。
从输入image中返回一个crops张量,位于boxes(参数2)的边界框位置出定义的位置。 裁剪后的框都是调整大小为固定size=[crop_height, crop_width]. 结果是一个四维张量[num_boxes, crop_height, crop_width, depth]. 调整大小是角对齐。如果boxex=[[0,0,1,1]], 该方法将为使用tf.image.resize_biliner()与align_corners=True提供相同的结果。
参数:
image: 一个Tensor, 一个形状为[batch, image_height, image_width, depth]的四维张量,image_height和image_width需要为正值。
boxes: 一个类型为float32的Tensor, 形状为[num_boxes,4]的二维张量。 张量的第i行指定box_ind[i]图像中框的位置,并且在标准化坐标中心指定[y1,x1,y2,x2];标准化的坐标值y被映射到图像坐标y* (image_height-1)处,从而标准化图像高度的[0,1]间隔被映射到[0, image_height-1]的图像高度坐标中。我们允许y1>y2,在这种情况下,采样的裁剪是原始图像的上下翻转版本。宽度维度的处理方式类似。[0,1]范围之外的标准化坐标是允许的,在这种情况下,我们使用extrapolation_value外推输入图像值。
box_ind: 一个int32类型的Tensor;形状为[num_box]的一维张量,在[0, batch]中具有int32值。该box_ind[i]值指定第i个方框要引用的图像。
crop_size: 一个int32类型的Tensor; 一个2个元素的一维度张量, size=[crop_height, crop_widht].所有裁剪的图像修补程序都调整为此大小。图像内容的宽高比不被保留; crop_height和crop_width需要为正值。
name: 操作的名称(可选)
返回值:
tf.image.crop_and_resize函数返回一个类型的float32的Tensor.