在Python中将两个灰度图像转换为一个2通道图像

时间:2019-10-23 13:50:07

标签: python image-processing

我想将两个灰度图像 [256,256,1]-[256,256,1] 转换为一个2通道图像 [256,256,2] ..

我该怎么做?如何将两张图片合而为一?

1 个答案:

答案 0 :(得分:0)

最基本的原则是“ matplotlib / opencv的映像实际上是numpy ndarray”,因此您可以使用numpy支持的多种方法。

示例:

import numpy as np

# Create grayscale image A (The shape as you describe)
greyA = np.random.randint(0, high=256, size=(256, 256, 1))
# Create grayscale image B (The shape as you describe)
greyB = np.random.randint(0, high=256, size=(256, 256, 1))

# Confirm the shape of the grayscale image A
print(greyA.shape)  # (256, 256, 1)
# Confirm the shape of the grayscale image B
print(greyB.shape)  # (256, 256, 1)

# Merged image
merge_image = np.concatenate((greyA, greyB), axis=2)
# Confirm the shape of the Merged image
print(merge_image.shape)  # (256, 256, 2)

在评论中回答您的问题

阅读imshow() 如果图像是8位无符号的,则按原样显示。 如果图像是16位无符号或32位整数,则将像素除以256。即,值范围[0,255 * 256]映射到[0,255]。 如果图像是32位或64位浮点,则像素值将乘以255。即,值范围[0,1]映射为[0,255]。

因此,不支持直接输出色彩空间为2的图像。您可以使用平均值或加权平均值来融合两个图像的像素阵列。