So erhalten Sie alle Bilder anhand bestimmter Indizes aus einem Bildarray

Jan 18 2021

Die Form des Bildarrays ist (540, 960, 3)wie folgt :

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]]]

Und ich möchte Elemente erhalten indices, die den einzelnen Elementindex und indicesdergleichen angeben :

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

Erwartete Ausgabe

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

In diesem Link gibt es zwei ähnliche Fragen: Eine ist die Python-Numpy-2D-Array-Summe über bestimmte Indizes und eine andere ist das Ermitteln der (x, y) -Indizes bestimmter (R, G, B) Farbwerte aus Bildern, die in NumPy-ndarrays gespeichert sind .

Es bekam eine, IndexError: too many indices for arrayals ich Frage eins von versuchte img_rgb[tuple(indices)].

Antworten

fountainhead Jan 18 2021 at 14:50

Sie müssen nur transponieren indices.

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

np.tranpose()würde funktionieren, selbst wenn indiceses sich nur um eine Liste handelt, da als Eingabe jede "Array-ähnliche" Struktur erwartet wird.