import streamlit as st import tensorflow as tf import numpy as np from skimage import exposure from skimage.io import imread from skimage.transform import resize from skimage.filters import sobel # Función para cargar y preprocesar la imagen def load_and_preprocess_image(image): # Descargar datos de imagen img = imread(image) # Asegúrate de que el tamaño de la imagen coincida con el modelo img = resize(img, (224, 224)) # Mejora de contraste img_contrast_enhanced = exposure.equalize_adapthist(img) # Detección de bordes #img_edges = sobel(img_contrast_enhanced) img_final = np.expand_dims(img_contrast_enhanced, axis=0) return img_final # Función para procesar la imagen con el modelo def process_image(image): # Carga del modelo model = tf.keras.models.load_model('model.h5') # modelo entrenado respaldado, archivo .h5 # Preprocesamiento de la imagen processed_image = load_and_preprocess_image(image) # Predicción result = model.predict(processed_image)[0][0] predicted_class = 'Maligno' if result >= 0.5 else 'Benigno' return predicted_class # Configuración de la barra lateral st.sidebar.title('Clasificador de Cáncer de Piel') # título de la barra st.sidebar.image('logo.png', width=50) # icono de la barra st.sidebar.markdown('[Github](https://github.com/lalovaltierra/MIA)') # link # Configuración del cuerpo principal st.title('Selecciona una imágen') # título del cuerpo principal uploaded_image = st.file_uploader('',type=['jpg', 'jpeg', 'png']) # input para imagen # Mostrar la imagen cargada y el resultado del procesamiento col1, col2 = st.columns(2) # se generan dos columnas col2.subheader("Resultado de la clasificación") #título de la columna 2 if uploaded_image is not None: # si hay imagen with col1: # Mostrar la imagen st.image(uploaded_image, caption='Imagen cargada', width=200) with col2: # Procesar la imagen result = process_image(uploaded_image) st.text(f'{result}')