Cara mendapatkan semua gambar dengan indeks tertentu dari larik gambar
Bentuk larik gambarnya adalah (540, 960, 3)
, dan seperti ini:
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]]]
Dan saya ingin mendapatkan elemen indices
yang menunjukkan indeks setiap elemen, dan indices
seperti ini:
indices = [
[0, 0], [0, 1], [0, 2]
]
Output yang diharapkan
[
[ 95 71 71],
[ 95 71 71],
[ 95 71 71],
]
Ada dua pertanyaan serupa di tautan tersebut, satu adalah jumlah array 2D numpy Python di atas indeks tertentu , dan yang lainnya adalah Menemukan indeks (x, y) dari nilai warna tertentu (R, G, B) dari gambar yang disimpan dalam ndarrays NumPy .
Itu mendapat IndexError: too many indices for array
pertanyaan Ketika saya mencoba satu per satu img_rgb[tuple(indices)]
.
Jawaban
Anda hanya perlu melakukan transposisi indices
.
img_rgb[tuple(np.transpose(indices))]
np.tranpose()
akan bekerja bahkan jika indices
hanya sebuah daftar, karena ia mengharapkan sebagai masukan setiap struktur "seperti larik".