我有一个图像的numpy数组(224,224,4)。每个像素都有4维 - r,g,b,alpha。我需要为其alpha通道为255的每个像素提取(r,g,b)值。
我想首先删除数组中alpha值大于< 255的所有元素,然后只提取这些剩余元素的前3个值(r,g,b),但在Python的简单循环中执行它是非常慢。是否有使用numpy操作的快速方法?
答案 0 :(得分:4)
这应该有效:arr[arr[:,:,3]==255][:,:,:3]
答案 1 :(得分:1)
这样的事情?
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
)。结果将是一个矩阵,所有像素垂直堆叠