import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import glob as glob
38 Flujo de trabajo en NumPy con imagenes
¡Bienvenides a esta sección donde nos adentraremos en el análisis de imágenes de flujos de fluidos utilizando NumPy, PIL, Matplotlib y glob! En esta sesión, enfrentaremos un desafío fascinante: recopilar imágenes de velocidad de flujo en arreglos por canal para analizar la dinámica del flujo. Emplearemos glob para localizar las imágenes, PIL para cargarlas, NumPy para procesarlas y Matplotlib para visualizar los resultados.
Nos prepararemos para explorar cómo cada una de estas herramientas se integra para procesar y visualizar imágenes de manera efectiva. Esta habilidad es clave para desentrañar los misterios de la dinámica de fluidos y mejorar nuestra comprensión de este fenómeno.
= glob.glob("../data/obstacle/*.png")
vels
vels.sort() vels
['../data/obstacle/u_norm_173.png',
'../data/obstacle/u_norm_174.png',
'../data/obstacle/u_norm_175.png',
'../data/obstacle/u_norm_176.png',
'../data/obstacle/u_norm_177.png',
'../data/obstacle/u_norm_178.png',
'../data/obstacle/u_norm_179.png',
'../data/obstacle/u_norm_180.png',
'../data/obstacle/u_norm_181.png',
'../data/obstacle/u_norm_182.png',
'../data/obstacle/u_norm_183.png',
'../data/obstacle/u_norm_184.png',
'../data/obstacle/u_norm_185.png',
'../data/obstacle/u_norm_186.png',
'../data/obstacle/u_norm_187.png',
'../data/obstacle/u_norm_188.png',
'../data/obstacle/u_norm_189.png',
'../data/obstacle/u_norm_190.png',
'../data/obstacle/u_norm_191.png',
'../data/obstacle/u_norm_192.png']
def transforma_imagen(imagen):
= Image.open(imagen)
img = np.array(img)
img = img[:,:,:3]
img return img
= transforma_imagen(vels[10])
imagen = plt.subplots()
fig, ax ="hot")
ax.imshow(imagen,cmap imagen.shape
# imagen[:,:,3] #0,1,2
= transforma_imagen(vels[1])
imagen = plt.subplots(3)
fig, ax 0].imshow(imagen[:,:,0],cmap="hot")
ax[1].imshow(imagen[:,:,1],cmap="hot")
ax[2].imshow(imagen[:,:,2],cmap="hot") ax[
vels
['../data/obstacle/u_norm_173.png',
'../data/obstacle/u_norm_174.png',
'../data/obstacle/u_norm_175.png',
'../data/obstacle/u_norm_176.png',
'../data/obstacle/u_norm_177.png',
'../data/obstacle/u_norm_178.png',
'../data/obstacle/u_norm_179.png',
'../data/obstacle/u_norm_180.png',
'../data/obstacle/u_norm_181.png',
'../data/obstacle/u_norm_182.png',
'../data/obstacle/u_norm_183.png',
'../data/obstacle/u_norm_184.png',
'../data/obstacle/u_norm_185.png',
'../data/obstacle/u_norm_186.png',
'../data/obstacle/u_norm_187.png',
'../data/obstacle/u_norm_188.png',
'../data/obstacle/u_norm_189.png',
'../data/obstacle/u_norm_190.png',
'../data/obstacle/u_norm_191.png',
'../data/obstacle/u_norm_192.png']
= transforma_imagen(vels[0])
img0 = transforma_imagen(vels[1])
img1
= np.dstack([img0[:,:,0],img1[:,:,0]])
rojas = np.dstack([img0[:,:,1],img1[:,:,1]])
verdes = np.dstack([img0[:,:,2],img1[:,:,2]])
azules rojas.shape,verdes.shape,azules.shape
((894, 4800, 2), (894, 4800, 2), (894, 4800, 2))
= []
lista for vel in vels:
0])
lista.append(transforma_imagen(vel)[:,:,= np.dstack(lista)
rojas rojas.shape
(894, 4800, 20)
= np.dstack([transforma_imagen(vel)[:,:,0]for vel in vels])
rojas rojas.shape
(894, 4800, 20)
##Que debo cambiar?
= np.dstack([transforma_imagen(vel)[:,:,0]for vel in vels])
verdes = np.dstack([transforma_imagen(vel)[:,:,0]for vel in vels]) azules