繁体   English   中英

如何过滤 3D RGB numpy 数组

[英]How to filter a 3D RGB numpy array

我想得到一个绿色的二维掩码数组。 代码:

W = 100; H = 100

Map = np.zeros((W,H,3), dtype=int)

Map[1,1] = [0,255,0]

MResult = (Map[:,:] == [0,255,0])

A = np.zeros((W,H))

A[MResult] = 1

不工作。

我认为您的代码中还有一个概念错误,高度应该是第一个维度,所以 Map 应该是np.zeros((H,W,3), dtype='int') 另请注意,dtype 是一个字符串,而不是 python 内置的 int。

现在回到问题上来,您需要使用numpy 的智能索引来更好地操作数组。 似乎您想在 Map 中将绿色通道设置为 255,您可以通过执行Map[:,:,1] = 255注意我们使用:来表示“行和列中的所有元素,并且在通道 1 应设置为 255"。

然后我们得到 A 的二进制掩码,我们应该做MResult = Map[:,:,1] == 255 ,最后我们像你一样简单地做A[MResult] = 1

只检查绿色通道不是一个好主意,我们也会得到白色。

但是代码:

import numpy as np

W = 100; H = 100

Map = np.zeros((W,H,3), dtype=int)

Map[1,1] = [0,255,0]

A = np.zeros((W,H))

A[(0 == Map[:,:,0]) & (255 == Map[:,:,1]) & (0 == Map[:,:,2])] = 1

现在开始工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM