从图像numpy数组中删除透明像素

时间:2016-06-24 07:01:53

标签: python opencv numpy

我有一个图像的numpy数组(224,224,4)。每个像素都有4维 - r,g,b,alpha。我需要为其alpha通道为255的每个像素提取(r,g,b)值。

我想首先删除数组中alpha值大于< 255的所有元素,然后只提取这些剩余元素的前3个值(r,g,b),但在Python的简单循环中执行它是非常慢。是否有使用numpy操作的快速方法?

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

2 个答案:

答案 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)。结果将是一个矩阵,所有像素垂直堆叠