gpt4 book ai didi

python - tensorflow image_resize 弄乱未知图像大小的图像

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:14 25 4
gpt4 key购买 nike

我有一个可变大小图像列表,希望将它们标准化为 256x256 大小。我使用了以下代码

import tensorflow as tf
import matplotlib.pyplot as plt

file_contents = tf.read_file('image.jpg')
im = tf.image.decode_jpeg(file_contents)
im = tf.image.resize_images(im, 256, 256)

sess = tf.Session()
sess.run(tf.initialize_all_variables())

img = sess.run(im)

plt.imshow(img)
plt.show()

但是,tf.resize_images() 往往会弄乱图像。但是,使用 tf.reshape() 似乎可以让 resize_image() 正常运行

tensorflow 版本:0.8.0

原始图片: enter image description here

调整大小的图像: enter image description here

我知道 skimage 包可以处理我需要的东西,但是我希望享受 tf.train.shuffle_batch() 的功能。我尽量避免维护 2 个相同的数据集(具有 1 个固定图像大小),因为 Caffe 处理它们似乎没有问题。

最佳答案

发生这种情况是因为 image_resize() 正在相邻像素之间执行插值,并返回 float 而不是 0-255 范围内的整数。这就是 NEAREST_NEIGHBOR 起作用的原因:它在不进行进一步数学运算的情况下获取近像素之一的值。假设您有一些值为 240、241 的相邻像素。NEAREST_NEIGHBOR 将返回 240 或 241。使用任何其他方法,该值可能类似于 240.5,并且在不四舍五入的情况下返回,我假设是故意的,以便您可以决定什么更好为你(地板,四舍五入等)。另一方面,当面对浮点值时,plt.imshow() 仅解释小数部分,就好像它们是 0.0 到 1.0 之间的满刻度像素值。要使上述代码正常工作,可能的解决方案之一是:

import numpy as np
plt.imshow(img.astype(np.uint8))

关于python - tensorflow image_resize 弄乱未知图像大小的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37032251/

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