我想制作一个简单的程序,将视频输出为网络摄像头,但摄像头想要一个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)