【问题标题】:RGB to GRAY using opencv removes 1 channel使用 opencv 将 RGB 转为 GREY 移除 1 个通道
【发布时间】:2021-06-18 05:53:00
【问题描述】:

我正在使用这些将 RGB 图像转换为灰色

i = cv2.resize(img, (100, 100))
i = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)

这给了我 (100,100) 但我想要 (100,100,1) 因为这是 CNN 的输入,如下所示

model.add(Conv2D(16, (2,2), input_shape=(100,100,1 ), activation='relu'))

显示我应该如何将 RGB 转换为 GREY,以便保留 1 个通道因子。

【问题讨论】:

    标签: keras rgb grayscale


    【解决方案1】:

    使用 numpy 重塑:

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

    【讨论】:

      【解决方案2】:

      您可以只添加额外的维度
      np.expand_dims(i, axis=0)

      【讨论】:

      • 这对于问题的要求并不完全正确。额外的维度必须在最后添加,而不是作为第一个维度。正确的轴是 -1,例如np.expand_dims(i, axis=-1)
      【解决方案3】:

      np.expand_dimsreshape 相比,使用省略号和np.newaxis 可以提高代码的可读性。 这里是单行,很容易看出新维度会添加到最后一个维度。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-03
        • 1970-01-01
        • 1970-01-01
        • 2013-03-17
        • 2019-03-15
        • 2021-06-29
        • 2023-03-19
        • 1970-01-01
        相关资源
        最近更新 更多