将(B,G,R,IR)转换为(R,G,B)图像数组 - Python

时间:2017-04-24 08:18:30

标签: python numpy

我有一些卫星图像,我想将它们转换为常规RGB图像。卫星图像在(B,G,R,IR)范围内。我想将它们转换为(RGB图像)。目前,我正在做以下事情:

    img1 = img[ :, :, :-1].copy()
    img1 = img1*255.0/img1.max()
    img2 = np.zeros(np.shape(img1))
    img2[:,:,0] = img1[:,:,2]
    img2[:,:,1] = img1[:,:,1]
    img2[:,:,2] = img1[:,:,0]
    img2 = img2.astype(np.uint8)

上面的代码看起来非常难看。我想知道这样做是否有一些巧妙的伎俩。某种形式的hstackvstack等,或某种形式的智能转置...

1 个答案:

答案 0 :(得分:3)

对于img1,我建议保留它,因为从性能角度和代码紧凑性来看都是如此。

对于img2创建,我们正在处理第三个轴作为颜色维度,基本上沿着它翻转,所以我们可以像这样缩短它 -

img2 = img1[:,:,::-1].astype(np.uint8)
相关问题