Crea una amplia gama de imágenes

Tengo algunos (950) 150x150x3 .jpg archivos de imagen que quiero leer en una matriz de Numpy.

Lo siguiente es mi código:

X_data = [] files = glob.glob ("*.jpg") for myFile in files: image = cv2.imread (myFile) X_data.append (image) print('X_data shape:', np.array(X_data).shape) 

La salida es (950, 150) . Déjeme saber por qué la lista no se convierte correctamente a np.array y si hay una mejor manera de crear la matriz de imágenes.

De lo que he leído, agregar números a las matrices es más fácil hacerlo a través de las listas de python y luego convertirlas en matrices.

EDIT: Más información (si ayuda), image.shape devuelve (150,150,3) correctamente.

He probado su código. Funciona bien para mi con salida.

(‘X_data shape:’, (4, 617, 1021, 3))

Sin embargo, todas las imágenes eran exactamente de la misma dimensión.

Cuando agrego otra imagen con diferentes extensiones tengo esta salida:

(‘X_data shape:’, (5,))

¿Así que recomiendo verificar los tamaños y la misma cantidad de canales (ya que en realidad todas las imágenes son imágenes en color)? También debe verificar si todas las imágenes (o ninguna) tienen canales alfa (vea el comentario de @Gughan Ravikumar)

Si solo el número de canales varía (es decir, algunas imágenes son de color gris), entonces fuerza la carga en el formato de color con:

 image = cv2.imread (myFile, 1) 

EDITAR: utilicé el código de la pregunta, solo reemplazado con un directorio mío (y “* .PNG”):

 import cv2 import glob import numpy as np X_data = [] files = glob.glob ("C:/Users/xxx/Desktop/asdf/*.PNG") for myFile in files: print(myFile) image = cv2.imread (myFile) X_data.append (image) print('X_data shape:', np.array(X_data).shape) 

Su definición para la ttwig .JPG que se colocará en una matriz del mismo tamaño debe ser x, y, R, G, B, A. “A” no se usa, pero ocupa 8 bits al final de cada píxel.