Forum >> Principianti >> Aggiungere elementi alla lista mantenendo la multidimensionalità

Pagina: 1

Ciao a tutti, ho una domanda facile a cui non trovo risposta.
Nel codice seguente prendo un immagine e la converto in array numpy 3d (cordinate x, y di ogni singolo pixel e colore rgb)
Poi
scorro questto array e estraggo sequenzialmente delle matrici 5 x 5 x 3
(quindi matrici di 5 x 5 px più i 3 valori rgb) e li inserisco in un
array

from PIL import Image  
import numpy as np  
  
img = Image.open("img.jpg")  
arr = np.array(img)  
  
x = []  
h,w,rgb = arr.shape  
size = 5  
  
for i in range(0,h):  
    for j in range(0,w):  
        part = arr[i:i+size,j:j+size]  
        if len(part)==size and len(part0)==size:  
            x.append(part) 
Il risultato è una cosa tipo:

...
[[129, 166, 175],
[129, 166, 175],
[130, 167, 175],
[128, 166, 175],
[128, 166, 175]],

...

[[129, 166, 174],
[129, 166, 174],
[129, 166, 175],
[129, 166, 175],
[128, 166, 175]]], dtype=uint8), 129, 166, 175, array([[[129, 166, 175],
[128, 166, 175],
[128, 166, 175],
[128, 166, 175],
[128, 168, 176]],

...

[[129, 166, 174],
[129, 166, 175],
[129, 166, 175],
[128, 166, 175],
[129, 167, 176]]], dtype=uint8), 129, 166, 175, array([[[128, 166, 175],
[128, 166, 175],
[128, 166, 175],
[128, 168, 176],
[128, 168, 178]],

...

[[129, 166, 175],
[129, 166, 175],
[128, 166, 175],
[129, 167, 176],
[128, 168, 176]]], dtype=uint8), 128, 166, 175]

Mentre io mi aspetterei una cosa tipo

...
[[129, 166, 175],
[129, 166, 175],
[130, 167, 175],
[128, 166, 175],
[128, 166, 175]],

...

[[129, 166, 174],
[129, 166, 174],
[129, 166, 175],
[129, 166, 175],
[128, 166, 175]]], dtype=uint8), array([[[129, 166, 175],
[128, 166, 175],
[128, 166, 175],
[128, 166, 175],
[128, 168, 176]],

...

[[129, 166, 174],
[129, 166, 175],
[129, 166, 175],
[128, 166, 175],
[129, 167, 176]]], dtype=uint8), array([[[128, 166, 175],
[128, 166, 175],
[128, 166, 175],
[128, 168, 176],
[128, 168, 178]],

...

[[129, 166, 175],
[129, 166, 175],
[128, 166, 175],
[129, 167, 176],
[128, 168, 176]]], dtype=uint8)]

Quindi una matrice che sia sempre 5 x 5 x 3 non in alcuni punti
monodimensionali infatti dopo il ", dtype=uint8)," mi aspetterei un ,
array([[[128, 166, 175], e non un 128, 166, 175

grazie.



Pagina: 1



Esegui il login per scrivere una risposta.