Tensorflow - 如何将图像分成两半?

时间:2017-08-29 16:11:11

标签: python tensorflow tensorflow-gpu

我想将图像分成两部分,以便我可以处理GPU#1上的第一部分和GPU#2上的第二部分。不过这是问题所在:我似乎无法将图像分成两半

with tf.device(my_gpu):

    # Load onto GPU
    filename_queue = tf.train.string_input_producer([image_path], capacity=1)
    reader = tf.WholeFileReader()
    key, value = reader.read(filename_queue)

    # Get image as float32
    image = tf.image.decode_png(value, channels=3)
    image_float32 = tf.image.convert_image_dtype(image, tf.float32)

现在是棘手的部分。如何将图像分成两半?这是我想要做的伪代码

x,y,z = image.shape
half = x / 2

a = half - 3
b = half + 3

first_half = image[:b, :, :]
second_half = image[a:, :, :]

batch1 = tf.stack([first_half])
batch2 = tf.stack([second half])

我尝试使用image_float32.get_shape().as_list()获取图像形状,返回[None,None,3]。我也尝试了x=tf.shape(image_float32)[0],但返回

TypeError: int() argument must be a string or a number, not 'Tensor'

我知道tf.split,但我不知道如何在伪代码中以我想要的方式分割图像。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用tf.slice

first_half = tf.slice(image, [0, 0, 0], [a, y, z])
second_half = tf.slice(image, [a, 0, 0], [b, y, z])