Como obter todas as pixs por certos índices de uma matriz de imagem
A forma da matriz da imagem é (540, 960, 3)
assim:
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]]]
E eu quero obter elementos indices
que indiquem o índice de cada elemento, e indices
assim:
indices = [
[0, 0], [0, 1], [0, 2]
]
Saída esperada
[
[ 95 71 71],
[ 95 71 71],
[ 95 71 71],
]
Há duas questões semelhantes nesses links, uma é a soma de array 2D numpy Python sobre certos índices e outra é Encontrar os índices (x, y) de valores de cor específicos (R, G, B) de imagens armazenadas em ndarrays NumPy .
Recebi uma IndexError: too many indices for array
pergunta de Quando eu tentei img_rgb[tuple(indices)]
.
Respostas
fountainhead
Você só precisa transpor indices
.
img_rgb[tuple(np.transpose(indices))]
np.tranpose()
funcionaria mesmo se indices
fosse apenas uma lista, uma vez que espera como entrada qualquer estrutura do tipo "array".
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?