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

标签 python tensorflow

我有一个可变大小图像列表,希望将它们标准化为 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/

相关文章:

python - word2vec的RNN模型(GRU)回归未学习

python - 在Python中使用re包将句子分成子句

python - 使用Python的decimal.Decimal时删除无关的小数位

Python:如何确保函数在第一次调用时加载一次?

python - 如何将 Spark Streaming 与 TensorFlow 集成?

docker - 用Docker在Tensorflow上调试的简单方法是什么?

python - 如何查看 TensorFlow session 的默认配置选项?

python - Pandas to_latex() : how to make lines in tables?

python - 使用 BeautifulSoup 和 Requests 抓取多个分页链接

javascript - 如何在 Javascript 对象中找到隐藏的属性/方法?