Основным принципом является «изображение 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. Вы можете использовать среднее или взвешенное среднее, чтобы объединить пиксельные массивы двух изображений.