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

标签 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)

上面的代码看起来确实很难看。我想知道是否有一些巧妙的技巧可以做到这一点。某种形式的 hstack、vstack 等,或者某种形式的智能转置...

最佳答案

对于 img1,我建议从性能角度和代码紧凑性角度保留它。

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

img2 = img1[:,:,::-1].astype(np.uint8)

关于python - 将 (B,G,R,IR) 转换为 (R,G,B) 图像数组 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43583046/

相关文章:

多个数组的Python apply_along_axis

python - Redis "ResponseError: unknown command ' 50 2'"

python - 无法获得 tiff 图像分辨率

python - (Numpy) bool 数组的索引列表

Python:同时迭代许多大文件,获取每个第k行

python - 无法使用for循环处理大量数据

python - 在值数组上调用 random.normal 会增加噪音吗?

python - 使 OSX 中的 matplotlib 在虚拟环境中工作的最简单方法是什么?

python - 如何加载文本文件并在单个图中绘制多列?

python - 使用 pandas 包用 python 清理 excel 数据