如何从图像数组中通过某些索引获得所有像素



图像数组的形状是(540, 960, 3),它是这样的:

img_rgb = [[[ 95  71  71]
[ 95  71  71]
[ 95  71  71]
...
[182 171 181]
[182 171 181]
[182 171 181]]
[[ 95  71  70]
[ 95  71  70]
[ 95  71  71]
...
[183 172 182]
[183 172 182]
[183 172 182]]
[[ 95  72  70]
[ 95  71  70]
[ 95  71  71]
...
[183 172 182]
[183 172 182]
[183 172 182]]
...
[[ 36  35  45]
[ 36  35  45]
[ 36  35  45]
...
[ 49  45  50]
[ 49  45  50]
[ 49  45  50]]
[[ 36  35  45]
[ 36  35  45]
[ 36  35  45]
...
[ 49  45  50]
[ 49  45  50]
[ 49  45  50]]
[[ 36  35  45]
[ 36  35  45]
[ 36  35  45]
...
[ 49  45  50]
[ 49  45  50]
[ 49  45  50]]]

我想通过indices来获取表示每个元素索引的元素,indices像这样:

indices = [
[0, 0], [0, 1], [0, 2]
]

预期输出

[
[ 95  71  71],
[ 95  71  71],
[ 95  71  71],
]

在这些链接中有两个类似的问题,一个是Python numpy 2D数组对某些索引求和,另一个是从存储在numpy ndarrays中的图像中找到特定(R,G,B)颜色值的(x,y)索引。

当我通过img_rgb[tuple(indices)]尝试第一个问题时,它得到了一个IndexError: too many indices for array

你只需要转置indices

img_rgb[tuple(np.transpose(indices))]
即使indices

只是一个列表,np.tranpose()也可以工作,因为它期望输入任何"类数组"结构。

最新更新