Ваши попытки не сработали, потому что вы не используете доступные инструменты совершенно правильно.Оба подхода, которые вы попробовали, являются правильными с несколькими незначительными изменениями.
zeros
требует одного кортежа для описания размера массива, а не двух отдельных аргументов:
full_image = np.zeros((image.shape[0], image.shape[1], 3))
full_image[..., 0] = image_r
full_image[..., 1] = image_g
full_image[..., 2] = image_b
hstack
сцепляетсявдоль второго измерения.Вы хотите объединить вдоль третьего, поэтому либо используйте dstack
, либо просто stack
.В любом случае первый аргумент - это кортеж, содержащий все массивы, которые вы хотите объединить:
full_image = np.dstack((image_r, image_g, image_b))
или
full_image = np.stack((image_r, image_g, image_b), axis=2)
Вы можете даже использовать concatenate
, но я действительно не рекомендую это.concatenate
принимает кортеж из всех массивов, к которым вы хотите присоединиться, например, stack
, но он работает с измерением, которое уже существует, поэтому вы должны создать его:
full_image = np.concatenate((image_r[..., None], image_g[..., None], image_b[..., None]), axis=2)