如何在图像阵列中添加通道?

时间:2017-08-29 08:56:51

标签: python numpy

我们说我有一个维度为(10, 48, 48, 1)的numpy数组。这里10代表图像数量。图片为48x48,单个频道1。由于这些是灰度图像,我希望我的数组来表示。当然这是不可能的,但我想用0初始化我的其他2个频道。那么如何添加其他二维以使我的数组形状变为(10,48,48,3)

3 个答案:

答案 0 :(得分:2)

创建零数组并沿最后一个轴连接 -

use App\Group;

示例运行 -

z = np.zeros(imgs.shape[:-1] + (2,), dtype=imgs.dtype)
imgs_out = np.concatenate((imgs, z), axis=-1)

答案 1 :(得分:2)

您也可以使用np.pad

pad = ((0,0),)*3 + ((0,2),)
imgs = np.pad(imgs, pad, 'constant', constant_values = 0)
imgs.shape

(10, 288, 288, 3)

如果您没有填写零,可以重复这些值,您也可以使用np.broadcast_to(如果您想要写一份,请务必复制一份)

imgs = np.broadcast_to(imgs, (10, 48, 48, 3)).copy()

答案 2 :(得分:0)

如果使用的是opencv,则可以使用cv2.cvtcolor 例如:

img = np.zeros((255,255), dtype = np.uint8)
print(img.shape)
color_channeled_image = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
print(color_channeled_image.shape)

您的输出:

(255,255)
(255,255,3)