Ho 1000 immagini RGB (64X64) che voglio convertire in un array (m, n).Numpy flatten RGB image array
Io uso questo:
import numpy as np
from skdata.mnist.views import OfficialImageClassification
from matplotlib import pyplot as plt
from PIL import Image
import glob
import cv2
x_data = np.array([np.array(cv2.imread(imagePath[i])) for i in range(len(imagePath))])
print x_data.shape
che mi dà: (1000, 64, 64, 3)
Ora, se faccio:
pixels = x_data.flatten()
print pixels.shape
ottengo: (12288000,)
Tuttavia, ho bisogno di un allineamento con queste dimensioni: (1000, 12288)
Come posso ottenere quello?
Neat! Ciò preserverà le proprietà dell'immagine originale, ad esempio, non perderò alcuna informazione sui pixel? –
'Flatten()' e 'reshape()' sono senza perdita di dati. Le dimensioni della matrice risultante devono sempre moltiplicarsi per essere lo stesso totale. Flatten ha un 'shape()' come array 1-D, non un array n-D, quindi nessun secondo valore per la sua forma. Sembra 'array ([1, 2, 3,])'. Una matrice n-D con forma (3,1) assomiglierebbe a 'array ([[1], [2], [3]])'. – Ray
Ecco un ottimo post SO su shaping: http://stackoverflow.com/questions/22053050/difference-between-numpy-array-shape-r-1-and-r – Ray