二维和三维数字阵列的多态处理



我正在Python中处理图像,需要编写一个既能处理彩色图像又能处理灰度图像的程序。它们是numpy阵列

颜色形状:(512512,3)

灰度形状:(512512)

现在我必须循环浏览每个图像通道,即返回:

For Color: im[:,:,0], im[:,:,1], im[:,:,2]
For Grayscale: im[:,:]

如何在没有if条件的情况下以相同的格式编写它们?我尝试了im[:,:,0]的灰度,但它超出了索引的范围。

我不确定这是否有帮助,但numpy提供了插入新轴的能力:

im_new = im_old[:,:,np.newaxis]

据我所知,这使得im_new[i,j,k]与任何kim_old[i,j]相同。

(还要注意,np.newaxis只是None的别名)

最新更新