Tensorflow:裁剪图像的最大中心正方形区域

Sam*_*uel 4 python image-processing tensorflow

我的网络拍摄100 x 100像素大小的图像。因此,我必须调整不同大小的数据集图像的大小。我希望能够从给定的图像中提取最大的中心正方形区域,然后将其大小调整为100 x 100.

更准确地说,假设图像具有200像素的宽度和像素的高度50。然后我想提取本例中最大的中心正方形区域,50 x 50然后将图像大小调整为100 x 100像素。

使用 Tensorflow 做到这一点的正确方法是什么?现在我正在使用tf.image.resize_images()它扭曲图像,我想摆脱它。

seb*_*ckm 5

听起来像是crop_to_bounding_box在做你需要的事情:

import tensorflow as tf

def crop_center(image):
    h, w = image.shape[-3], image.shape[-2]
    if h > w:
        cropped_image = tf.image.crop_to_bounding_box(image, (h - w) // 2, 0, w, w)
    else:
        cropped_image = tf.image.crop_to_bounding_box(image, 0, (w - h) // 2, h, h)
    return tf.image.resize_images(cropped_image, (100, 100))
Run Code Online (Sandbox Code Playgroud)

  • 我无法获得正确的形状,“image.shape”返回(无,无,3)。我将此函数映射到“tf.data.Dataset”。我怎样才能做到这一点? (2认同)