在处理图像时,我想忽略所有白色像素。我认为最好的方法是设置掩码数组,以便在初始化时立即更改有白色像素的掩码数组。为此,我使用以下代码的最后一行中描述的方法。
File "C:\Users\Alec\zone_map.py", line 19, in zone_map
mask[numpy.argwhere(pix == [255,255,255])] = 1
IndexError: index 5376 is out of bounds for axis 0 with size 4000
但是,此行会生成以下错误:
{{1}}
如何更改此项以达到预期效果?
答案 0 :(得分:1)
在最后一个轴上使用ALL-reduced
的掩码,然后简单地索引到输入数组中以分配boolean-indexing
之后的值,就像这样 -
mask = (pix==255).all(axis=-1)
pix[mask] = 1
示例运行 -
In [18]: pix
Out[18]:
array([[[ 5, 11, 10],
[ 9, 5, 11],
[ 11, 10, 9],
[255, 255, 255]],
[[ 9, 8, 8],
[ 10, 8, 9],
[255, 255, 255],
[ 5, 8, 10]]])
In [19]: mask = (pix==255).all(-1)
In [21]: pix[mask] = 1
In [22]: pix
Out[22]:
array([[[ 5, 11, 10],
[ 9, 5, 11],
[11, 10, 9],
[ 1, 1, 1]],
[[ 9, 8, 8],
[10, 8, 9],
[ 1, 1, 1],
[ 5, 8, 10]]])