Keras 使用opencv将RGB变为灰色将删除1个通道

Keras 使用opencv将RGB变为灰色将删除1个通道,keras,rgb,grayscale,Keras,Rgb,Grayscale,我用这些把RGB图像转换成灰色 i = cv2.resize(img, (100, 100)) i = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY) 这给了我(100100),但我想要(100100,1),因为这是输入CNN所必需的,如下所示 model.add(Conv2D(16, (2,2), input_shape=(100,100,1 ), activation='relu')) 演示如何将RGB转换为灰色,以便保留1个通道因子 使用numpy重塑: i =

我用这些把RGB图像转换成灰色

i = cv2.resize(img, (100, 100))
i = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
这给了我(100100),但我想要(100100,1),因为这是输入CNN所必需的,如下所示

model.add(Conv2D(16, (2,2), input_shape=(100,100,1 ), activation='relu'))
演示如何将RGB转换为灰色,以便保留1个通道因子

使用numpy重塑:

i = i.reshape(i.shape + (1,))

您只需添加额外的维度

np.使用省略号和
np展开(i,轴=0)
新轴
np.展开
重塑
相比,您可以获得更具可读性的代码。 这是一个内衬,很容易看到新尺寸将添加到最后一个尺寸

import cv2
import numpy as np

i = cv2.cvtColor(i, code=cv2.COLOR_RGB2GRAY)[..., np.newaxis]

对于这个问题的要求,这并不完全正确。必须在末尾添加额外尺寸,而不是作为第一个尺寸。正确的轴是-1,例如
np。展开(i,轴=-1)