Tensorflow:如何将张量的通道从RGB切换到BGR?

mcE*_*nge 5 tensorflow

有没有一种快速的方法来转换将图像从RGB编码到BGR的张量?

在python中会是这样的:

image = image[:, :, [2,1,0]]
Run Code Online (Sandbox Code Playgroud)

Jen*_*nny 7

你可以使用tf.strided_slicetf.reverse.

例如,

import tensorflow as tf

img = tf.reshape(tf.range(30), [2, 5, 3])

# the following two lines produce equivalent result:
img_channel_swap = img[..., ::-1]
img_channel_swap_1 = tf.reverse(img, axis=[-1])
Run Code Online (Sandbox Code Playgroud)

注意,api tf.reverse是从tensorflow r1.0改变的.


eto*_*pov 5

假设通道是最后一个维度。

channels = tf.unstack (image, axis=-1)
image    = tf.stack   ([channels[2], channels[1], channels[0]], axis=-1)
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,这是最好的答案,因为它比公认的答案(仅将轴从 RGB 交换为 BGR 或相反)更通用。 (2认同)