将三维Numpy数组转换为四维Numpy数组



我想制作一个简单的程序,将视频输出为网络摄像头,但摄像头想要一个RGBA Numpy数组,但我只有视频中的RGB。如何将三维数组转换为四维数组?

实际上并不是将三维数组转换为4维数组。您正在将其中一个维度的大小从3更改为4。

假设您有一个NxMx3图像。然后您需要:

temp = np.zeros((N, M, 4))
temp[:,:,0:3] = image
temp[:,:,3] = whatever default alpha you choose to use.

根据自己的意愿进行概括。

假设您现有的数组形状为(xsize, ysize, 3),并且您希望创建alpha作为第四个条目,所有条目都填充了1,那么您应该能够执行类似的操作

alpha = np.ones((*rgb.shape[0:2], 1))
rgba = np.concatenate((rgb, alpha), axis=2)

如果需要不同的统一alpha值,可以使用具有该值的np.full而不是np.ones,但通常在将RGB转换为RGBA时,需要完全不透明。

您可以使用np.ones(im.shape[:2])np.dstack您的原始im

new_im = np.dstack((im, np.ones(im.shape[:2])))

更新:这相当于@hobbs解决方案np.concatenate(..., axis=2)

也许可以尝试以下操作:(将numpy导入为np(


arr  # shape (n_bands, y_pixels, x_pixels)
swapped = np.moveaxis(arr, 0, 2)  # shape (y_pixels, x_pixels, n_bands)
arr4d = np.expand_dims(swapped, 0)  # shape (1, y_pixels, x_pixels, n_bands)

最新更新