varias recorrer procesamiento por pixeles mostrar leer imagenes imagen descomponer con como analisis python numpy scipy scikit-learn scikit-image

recorrer - forma más rápida de iterar sobre todos los píxeles de una imagen en python



recorrer imagen opencv python (1)

Ya leí una imagen como una matriz:

import numpy as np from scipy import misc face1=misc.imread(''face1.jpg'')

las dimensiones de la cara 1 son (288, 352, 3)

Necesito iterar sobre cada píxel y llenar una columna y en un conjunto de entrenamiento, tomé el siguiente enfoque:

Y_training = np.zeros([1,1],dtype=np.uint8) for i in range(0, face1.shape[0]): # We go over rows number for j in range(0, face1.shape[1]): # we go over columns number if np.array_equiv(face1[i,j],[255,255,255]): Y_training=np.vstack(([0], Y_training))#0 if blank else: Y_training=np.vstack(([1], Y_training)) b = len(Y_training)-1 Y_training = Y_training[:b] np.shape(Y_training)`

Wall time: 2.57 s

Como tengo que hacer el proceso anterior para unas 2000 imágenes, ¿hay algún enfoque más rápido en el que podamos reducir el tiempo de ejecución a milisegundos o naonseconds?


Puede usar la broadcasting para realizar una comparación emitida contra el píxel blanco: [255, 255, 255] y ALL reducir cada fila con .all(axis=-1) y finalmente convertir a int dtype. Esto nos daría la salida que tendrías justo después de salir del ciclo.

Por lo tanto, una implementación sería:

(~((face1 == [255,255,255]).all(-1).ravel())).astype(int)

Alternativamente, una versión un poco más compacta

1-(face1 == [255,255,255]).all(-1).ravel()