# Aula_228-B.py
#Ejecutar: python3 Aula_228-B.py
from PIL import Image
import pickle
def binarize_image(image_path, threshold=128):
# Abre la imagen utilizando PIL
image = Image.open(image_path).convert('L') # Convierte a escala de grises
# Convierte la imagen a una matriz de píxeles
pixels = list(image.getdata())
# Aplica la binarización según el umbral
binary_pixels = [1 if pixel > threshold else 0 for pixel in pixels]
# Obtiene las dimensiones originales de la imagen
width, height = image.size
# Reconstruye la imagen binarizada
binary_image = Image.new('1', (width, height))
binary_image.putdata(binary_pixels)
return binary_image
def save_binary_image_pickle(binary_image, output_path):
# Serializa la imagen binarizada y la guarda en un archivo con pickle
with open(output_path, 'wb') as file:
pickle.dump(binary_image, file)
def load_binary_image_pickle(input_path):
# Carga la imagen binarizada desde el archivo pickle
with open(input_path, 'rb') as file:
binary_image = pickle.load(file)
return binary_image
# Ejemplo de uso
input_image_path = 'gato.jpg'
output_pickle_path = 'imagen_binarizada.pkl'
# Binariza la imagen y la guarda en un archivo pickle
binary_image = binarize_image(input_image_path)
save_binary_image_pickle(binary_image, output_pickle_path)
# Carga la imagen binarizada desde el archivo pickle
loaded_binary_image = load_binary_image_pickle(output_pickle_path)
# Muestra la imagen original y la imagen binarizada
binary_image.show(title='Imagen Binarizada')
Image.open(input_image_path).show(title='Imagen Original')