我有一个可变大小图像列表,并希望将它们标准化为 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()
Run Code Online (Sandbox Code Playgroud)
但是,tf.resize_images()往往会弄乱图像。但是,使用tf.reshape()似乎可以resize_image()正确运行
Tensorflow 版本:0.8.0
我知道 skimage 包可以处理我需要的东西,但是我希望从tf.train.shuffle_batch(). 我尽量避免维护 2 个相同的数据集(具有 1 个固定图像大小),因为 Caffe 处理它们似乎没有问题。
小智 5
发生这种情况是因为 image_resize() 正在相邻像素之间执行插值,并返回浮点数而不是 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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1397 次 |
| 最近记录: |