Cómo obtener todos los píxeles por ciertos índices de una matriz de imágenes
La forma de la matriz de imágenes es (540, 960, 3)
, y es así:
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]]]
Y quiero obtener elementos indices
que indiquen el índice de cada elemento, y indices
así:
indices = [
[0, 0], [0, 1], [0, 2]
]
Rendimiento esperado
[
[ 95 71 71],
[ 95 71 71],
[ 95 71 71],
]
Hay dos preguntas similares en esos enlaces, una es Python numpy 2D array sum sobre ciertos índices , y otra es Encontrar los índices (x, y) de valores de color específicos (R, G, B) de imágenes almacenadas en NumPy ndarrays .
Recibió una IndexError: too many indices for array
pregunta cuando intenté uno por img_rgb[tuple(indices)]
.
Respuestas
fountainhead
Solo necesitas transponer indices
.
img_rgb[tuple(np.transpose(indices))]
np.tranpose()
funcionaría incluso si indices
es solo una lista, ya que espera como entrada cualquier estructura "tipo matriz".