Numpy 2D image to 3D

Viewed 983

I have a greyscale image represented as 2D numpy array and want to make it a 3D numpy array representing a color rgb image (which is obviously still grey).

img.shape       // (100, 100)
img[10, 10]     // e.g. 42

// do something

img.shape       // (100, 100, 3)
img[10, 10]     // e.g. [42, 42, 42]

I found this question which asked the opposite: numpy 3D-image array to 2D

3 Answers

You can use Numpy's dstack() to stack three grey images depthwise:

RGB = np.dstack((grey, grey, grey))

Does the following code help?

import numpy as np
aa = np.zeros((4,4),dtype='int64')
aa[1,1] = 42
aa = aa.reshape((4,4,1))
bb = np.broadcast_to(aa,(4,4,3))
print(bb[1,1,:])
Related