画像配列から特定のインデックスですべてのpixを取得する方法

Jan 18 2021

画像配列の形状は(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],
]

これらのリンクには2つの同様の質問があります。1つは特定のインデックスに対するPythonnumpy 2D配列の合計であり、もう1つはNumPy ndarraysに格納されている画像から特定の(R、G、B)カラー値の(x、y)インデックスを見つけることです。

IndexError: too many indices for array質問を1つずつ試してみるとimg_rgb[tuple(indices)]

回答

fountainhead Jan 18 2021 at 14:50

転置する必要がありindicesます。

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

np.tranpose()場合でも動作しますindices、それは、入力として任意の「アレイ状」構造を期待するので、リストだけです。