在处理图像时,经常遇到需要把单通道的图像转换为3通道的rgb图像,大部分情况下,简单的重复堆叠已经可以满足。下面总结了两种简单的转换方法:
一、np.stack()函数

img = np.stack((img,) * 3, axis=-1)

np.stack([arrays1,array2,array3],axis=0)。第二个参数是axis,这个参数表示从哪一个维度进行堆叠以及堆叠的内容,这个维度是相对于堆叠的数组来说的。整个函数的输出为一个新数组。
在这里插入图片描述
在pytorch中,一般都是channel first。而axis=-1表示对最后一维进行操作。原始的y的维数为(2,3),那么堆叠以后维数为(2,3,3)

参考自:

python中axis=-1解释

np.stack()函数详解

二、 tf.tile()
tile() 平铺之意,用于在同一维度上的复制
在tensorflow中,通常是channel last。
函数定义:

tf.tile(
    input,
    multiples,
    name=None
)

input是待扩展的张量,multiples是扩展方法。
假如input是一个3维的张量。那么mutiples就必须是一个1x3的1维张量。这个张量的三个值依次表示input的第1,第2,第3维数据扩展几倍。

import tensorflow as tf

a = tf.constant([[1, 2], [3, 4], [5, 6]], dtype=tf.float32)
a1 = tf.tile(a, [2, 3])
with tf.Session() as sess:
    print(sess.run(a))
    print(sess.run(tf.shape(a)))
    print(sess.run(a1))
    print(sess.run(tf.shape(a1)))
=======
[[1. 2.]
 [3. 4.]
 [5. 6.]]
[3 2]
[[1. 2. 1. 2. 1. 2.]
 [3. 4. 3. 4. 3. 4.]
 [5. 6. 5. 6. 5. 6.]
 [1. 2. 1. 2. 1. 2.]
 [3. 4. 3. 4. 3. 4.]
 [5. 6. 5. 6. 5. 6.]]
[6 6]

直观的理解tensorflow中的tf.tile()函数

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐