为了账号安全,请及时绑定邮箱和手机立即绑定

合并ndarray图像

合并ndarray图像

慕后森 2022-06-07 16:42:16
我有ndarray一个形状为的图像(2000, 2000, 3)。在下一步中,拆分通道以对其进行一些工作:image_r = (image_color[:,:,0])image_g = (image_color[:,:,1])image_b = (image_color[:,:,2])工作完成后,我需要将通道合并为一张图像。我怎么做?我试图生成一个空图像full_image = np.zeros((image.shape[0], image.shape[1]), 3)并将通道附加到它。但这没有成功。我还尝试使用 hstack 来堆叠这些值。full_image = np.zeros((image.shape[0], image.shape[1]))full_image = np.hstack(full_image, image_r)full_image = np.hstack(full_image, image_g)full_image = np.hstack(full_image, image_b)但这也没有奏效。出现以下错误:full_image = np.hstack(full_image, image_r)  File "<__array_function__ internals>", line 4, in hstackTypeError: _vhstack_dispatcher() takes 1 positional argument but 2 were given你有什么想法?
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超5个赞

用于dstack沿第三轴堆叠数组:


full_image = np.dstack([image_r, image_g, image_b])

image_color = np.random.randint(0,255,(2000, 2000, 3))


image_r = (image_color[:,:,0])

image_g = (image_color[:,:,1])

image_b = (image_color[:,:,2])


np.dstack([image_r, image_g, image_b]).shape

# (2000, 2000, 3)


查看完整回答
反对 回复 2022-06-07
?
心有法竹

TA贡献1866条经验 获得超5个赞

您的尝试没有成功,因为您没有正确使用可用的工具。您尝试的两种方法都经过了一些小的修改。

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)


查看完整回答
反对 回复 2022-06-07
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号