# app.py from fastapi import FastAPI, File, UploadFile from fastapi.responses import FileResponse from PIL import Image import numpy as np import cv2 import os from gabor_filter import aplicar_filtros_gabor app = FastAPI() # Ruta temporal para almacenar la imagen subida UPLOAD_FOLDER = "./uploaded_images" os.makedirs(UPLOAD_FOLDER, exist_ok=True) @app.post("/upload/") async def upload_file(file: UploadFile = File(...)): """ Recibe una imagen y aplica filtros de Gabor. """ # Guardar la imagen en el servidor temporalmente imagen_path = os.path.join(UPLOAD_FOLDER, file.filename) with open(imagen_path, "wb") as buffer: buffer.write(await file.read()) # Aplicar filtros de Gabor a la imagen resultados = aplicar_filtros_gabor(imagen_path) # Guardar las imágenes procesadas en el servidor output_paths = [] for theta, img in resultados: output_path = f"{UPLOAD_FOLDER}/gabor_{theta}.jpg" cv2.imwrite(output_path, (img * 255).astype(np.uint8)) output_paths.append(output_path) # Retornar la lista de imágenes filtradas return {"message": "Imagen procesada", "resultados": output_paths} @app.get("/download/{filename}") async def download_file(filename: str): """ Permite descargar una imagen procesada. """ file_path = os.path.join(UPLOAD_FOLDER, filename) return FileResponse(file_path)