Python - 连接两个图像并添加其颜色通道

时间:2018-02-10 03:25:10

标签: python numpy opencv

我有两张500x500张图片,需要将它们合并在一起并添加其频道。

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

我要求合并两张彩色500x500图片的输出为500x500x6

我如何在Python中执行该操作?

感谢。

1 个答案:

答案 0 :(得分:0)

有两个选项,如果你想要单独的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.]]])

解决上述问题,提取每个原始的img:

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.]]])