我想使用Python将32 * 32 * 3 rgb图像转换为32 * 32 * 1维度的灰度

时间:2017-03-16 05:20:08

标签: python image tensorflow

以下是将RGB转换为灰度图像的功能。

我的输入图片为32*32*3,其中输出尺寸看起来像32*32,但我正在寻找32*32*1。我是否需要调整大小或重新缩放此图像。

有什么想法吗?

def rgb2gray(rgb):
    return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])

2 个答案:

答案 0 :(得分:2)

如果您希望在Tensorflow图表中进行转换,您可以使用此功能:https://www.tensorflow.org/api_docs/python/tf/image/rgb_to_grayscale

tf.image.rgb_to_grayscale(input_images)

另外,看起来你正在回答自己的问题。

有什么问题
def rgb2gray(rgb):
  return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
祝你好运!

答案 1 :(得分:1)

许多初学者很难理解这一点。我只会解释你。如果你有20个元素。您可以将它们转换为维度[20]或[10,2]或[5,2,2]的ndarray。 因此,在您的情况下,输出有32 * 32 = 1024像素数据。你可以使用Numpy的重塑功能重新塑造它们。这很简单。

例如,

print output.shape
// This prints as (32,32) in your case
output = output.reshape(32,32,1)

这解决了您的问题。