从图像numpy阵列中删除透明像素



i具有一个形状的numpy阵列(224,224,4)。每个像素具有4个维度-r,g,b,alpha。我需要提取每个像素的(r,g,b)值的alpha通道为255。

我想首先删除alpha值为< 255的数组中的所有元素,然后仅提取这些其余元素的前3个值(r,g,b),但在Python中简单地进行操作,非常慢。是否有使用Numpy操作的快速方法?

类似的东西?https://stackoverflow.com/a/21017621/4747268

这应该有效: arr[arr[:,:,3]==255][:,:,:3]

类似的东西?

import numpy as np
x = np.random.random((255,255,4))
y = np.where(x[:,:,3] >0.5)
res = x[y][:,0:3]

在哪里必须适合> 0.5满足您的需求(例如==255)。结果将是一个矩阵,所有像素的垂直堆叠

最新更新