使用tf.image.resize_images之后,我的照片变成了可怕的画面

时间:2017-09-14 11:05:06

标签: tensorflow

  1. original_picture (尺寸:128 * 128),如下所示:
  2. enter image description here

    1. 使用此功能后

      override func viewDidLayoutSubviews() {
          super.viewDidLayoutSubviews()
          /// Have a precise logic to centre it 
          let rect = CGRect(x: 270, y: 200, width: 100, height: 30)
          let button = UIButton(frame: rect)
          button.setTitle("Test Button", for: .normal)
          button.backgroundColor = UIColor.red
          button.addTarget(self, action: #selector(MasterViewController.testButtonTapped(sender:)), for: .touchUpInside)
      
          let window = self.view.window
          window?.addSubview(button)
          window?.bringSubview(toFront: button)
      }
      
      func testButtonTapped(sender: UIButton)   {
          debugPrint("Test button tapped")
      }
      
    2. 最后我用plt.imshow()来展示我的手势

    3. enter image description here

3 个答案:

答案 0 :(得分:2)

问题来自tensorflow's resize_images function returning floats

要正确调整大小并查看图像,您需要以下内容:

import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np

with tf.Session() as sess:

    tf.global_variables_initializer().run()
    image = tf.image.resize_images(original_image,(128,128))
    # Cast image to np.uint8 so it can be properly viewed
    # eval() tensor to get numpy array.
    image = tf.cast(image, np.uint8).eval()

plt.imshow(image)

答案 1 :(得分:1)

颜色反转,即每个像素的颜色[r, g, b]显示为[255 - r, 255 - g, 255 - b]

这可能与您在步骤2中获得的图像的数据类型有关。请在调整图像大小后尝试以下操作:

image = image.astype(np.uint8)

答案 2 :(得分:0)

我将使用 tensorflow 库作为 tf. tf.image.resize 调整图像大小(正确),然后当我们在其上使用 plt.imshow 时。 但是 plt.imshow 如果它看到浮点值是 0.5 或 221.3,它会将其剪辑到范围 [0,1] 中。


使用 RGB 数据将输入数据剪切到 imshow 的有效范围(浮点数为 [0..1],整数为 [0..255])。


这就是我的问题,

原始图像像素[91 105 166]。

调整大小后 tf.Tensor([ 91.01 105.01 166.01], shape=(3,), dtype=float32)

你可以看到调整大小是正确的,但剪裁是一个伤害。

正确使用该功能。

img_resize = tf.image.resize(random_img,[250,250])
img_resize = tf.cast(img_resize,'int64')
plt.imshow(img_resize)

这应该解决问题。