【问题标题】:Python - Concatenating two images and adding up their color channelsPython - 连接两个图像并添加它们的颜色通道
【发布时间】:2018-02-10 03:25:10
【问题描述】:

我有两张500x500 图像,需要将它们合并在一起并将它们的频道相加。

例如,当我使用 Numpy 的 concatenate 函数时,返回的输出变为 500x1000,并且不确定是否添加了颜色通道。

我正在寻找合并两个彩色500x500 图像的输出将是500x500x6

如何在 Python 中执行该操作?

谢谢。

【问题讨论】:

  • @Dair 喜欢将 image1 + image2 合并(两个 500x500 图像)。我还希望合并两个图像的 3 色通道。这有意义吗?
  • 是的,我注意到尺寸后才知道。起初我在考虑将 RGB 值加在一起。
  • “将它们的颜色通道相加”是什么意思?如果两个图像的形状是(500,500,3),合并图像的形状是(500,500,6)。那么结果就不是正常的RGB图像了。
  • 在我看来,如果您将有关合并图像和生成的几何图形的问题建立在具有 3 个通道的 5 像素宽 x 4 像素高的图像上,您可能会做得更好。这将具有双重好处:a)您可以显示 2 个此类图像的示例;b)如果您在输出图像几何中看到 9,您将能够看到它来自 5 和 4,而所有这些都相当困难带有 500x500 像素的正方形图像。

标签: python numpy opencv


【解决方案1】:

如果您想要单独的 RGB 或粘在一起,有几个选项:

np.stack([np.zeros((2,2,3)), np.ones((2,2,3))], axis=2)
Out[157]: 
array([[[[ 0.,  0.,  0.],
         [ 1.,  1.,  1.]],

        [[ 0.,  0.,  0.],
         [ 1.,  1.,  1.]]],


       [[[ 0.,  0.,  0.],
         [ 1.,  1.,  1.]],

        [[ 0.,  0.,  0.],
         [ 1.,  1.,  1.]]]])

np.concatenate([np.zeros((2,2,3)), np.ones((2,2,3))], axis=2)
Out[158]: 
array([[[ 0.,  0.,  0.,  1.,  1.,  1.],
        [ 0.,  0.,  0.,  1.,  1.,  1.]],

       [[ 0.,  0.,  0.,  1.,  1.,  1.],
        [ 0.,  0.,  0.,  1.,  1.,  1.]]])

为解决上述问题,提取每个原始图像:

two_img =np.stack([np.zeros((2,2,3)), np.ones((2,2,3))], axis=2)

two_img[...,0,:]
Out[160]: 
array([[[ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.]]])

two_img[...,1,:]
Out[161]: 
array([[[ 1.,  1.,  1.],
        [ 1.,  1.,  1.]],

       [[ 1.,  1.,  1.],
        [ 1.,  1.,  1.]]])

too_img = np.concatenate([np.zeros((2,2,3)), np.ones((2,2,3))], axis=2)

too_img[...,0:3]
Out[163]: 
array([[[ 0.,  0.,  0.],
        [ 0.,  0.,  0.]],

       [[ 0.,  0.,  0.],
        [ 0.,  0.,  0.]]])

too_img[...,3:]
Out[164]: 
array([[[ 1.,  1.,  1.],
        [ 1.,  1.,  1.]],

       [[ 1.,  1.,  1.],
        [ 1.,  1.,  1.]]])

【讨论】:

  • 感谢您的友好回复。当我为第一个解决方案(堆栈)执行 np.shape 时,我得到(2、2、2、3)。对于第二个解决方案(连接),我得到 (2, 2, 6)。哪一个是我将“两个” 2x2 图像与通道加在一起的图像?我看到第二个解决方案显示“6”,但我现在有“一个”2x2 图像,而“没有”两个 2x2 图像。请让我知道您的想法。
猜你喜欢
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 2018-12-04
相关资源
最近更新 更多