gpt4 book ai didi

image - 在 Tensorflow 中调整图像保留纵横比

转载 作者:行者123 更新时间:2023-12-02 09:14:16 24 4
gpt4 key购买 nike

我对 TF 还很陌生。我正在尝试调整图像张量的大小,以便图像的最低维度是一个常数值 LO_DIM。在非 tf 环境中,我会做这样的事情:

if img.size[0] < img.size[1]:
h = int(float(LO_DIM * img.size[1]) / img.size[0])
img = resize(img, [LO_DIM, h])
else:
w = int(float(LO_DIM * img.size[0]) / img.size[1])
img = resize(img, [w, LO_DIM])

我知道,要调整大小我应该使用 tf.image.resize_images ,但我不确定如何计算新的 wh考虑到张量似乎有 shape=<unknown> .

注意:我传递的每个图像可能有不同的大小,这就是我需要动态计算它的原因。而且我使用 LO_DIM 来保持纵横比并且不扭曲图像。

关于如何实现这一点的任何建议?

如果有帮助,处理目标是从缩放图像中获取随机 NxN 补丁,但我只能找到 resize_image_with_crop_or_pad这似乎没有进行初始缩放。

最佳答案

这是由 issue 回答的.

这是一个用于调整张量图像大小并保持纵横比的示例片段:

def resize_image_keep_aspect(image, lo_dim=LO_DIM):
# Take width/height
initial_width = tf.shape(image)[0]
initial_height = tf.shape(image)[1]

# Take the greater value, and use it for the ratio
min_ = tf.minimum(initial_width, initial_height)
ratio = tf.to_float(min_) / tf.constant(lo_dim, dtype=tf.float32)

new_width = tf.to_int32(tf.to_float(initial_width) / ratio)
new_height = tf.to_int32(tf.to_float(initial_height) / ratio)

return tf.image.resize_images(image, [new_width, new_height])

张量为 shape=<unknown> 的问题通过使用类型特定的解码器解决,如 tf.image.decode_jpegtf.image.decode_png ,而不是 tf.image.decode_image

关于image - 在 Tensorflow 中调整图像保留纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48643288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com