Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created November 17, 2021 02:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/461b3cf20561d2cf6758e2345b6611f3 to your computer and use it in GitHub Desktop.
Save parzibyte/461b3cf20561d2cf6758e2345b6611f3 to your computer and use it in GitHub Desktop.
"""
https://parzibyte.me/blog
"""
import numpy as np
import imageio
NOMBRE_IMAGEN = "travel.bmp"
def leer_imagen(ruta):
return np.array(imageio.imread(ruta), dtype='int').tolist()
def guardar_imagen(ruta, matriz):
return imageio.imwrite(ruta, np.array(matriz, dtype="uint8"))
def difuminado(nombre_imagen):
matriz_original = leer_imagen(nombre_imagen)
# Eliminar referencia para crear una nueva matriz
matriz_difuminada = matriz_original[:]
ancho = len(matriz_difuminada[0])
alto = len(matriz_difuminada)
for y in range(alto):
for x in range(ancho):
# Vamos a recorrer una mini matriz en la caja
inicio_y = y-1
inicio_x = x-1
fin_y = y+1
fin_x = x+1
if inicio_y < 0:
inicio_y = 0
if inicio_x < 0:
inicio_x = 0
if fin_x >= ancho:
fin_x = ancho - 1
if fin_y >= alto:
fin_y = alto - 1
suma_red = 0
suma_green = 0
suma_blue = 0
conteo = 0
while inicio_y <= fin_y:
indice_x = inicio_x
while indice_x <= fin_x:
pixel_matriz_original = matriz_original[inicio_y][indice_x]
suma_red += pixel_matriz_original[0]
suma_green += pixel_matriz_original[1]
suma_blue += pixel_matriz_original[2]
indice_x += 1
conteo += 1
inicio_y += 1
promedio_red = round(suma_red/conteo)
promedio_green = round(suma_green/conteo)
promedio_blue = round(suma_blue/conteo)
matriz_difuminada[y][x] = [
promedio_red, promedio_green, promedio_blue]
return matriz_difuminada
guardar_imagen("travel_difuminado.bmp", difuminado(NOMBRE_IMAGEN))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment