import gradio as gr import numpy as np from analisador_iridologico import ( pre_processar_imagem, detectar_esclera, detectar_iris_pupila, analisar_textura_setorial, validar_metricas, AnalisadorIridologicoNLP ) def criar_interface(): theme = gr.themes.Soft( primary_hue="teal", secondary_hue="green", ).set( body_text_color="#2A9D8F", block_title_text_color="#264653", block_label_text_color="#2A9D8F", input_background_fill="#E9F5F3", button_primary_background_fill="#2A9D8F", button_primary_background_fill_dark="#264653", ) def processar_imagem(imagem): try: imagem_processada = pre_processar_imagem(imagem) mask_esclera = detectar_esclera(imagem_processada) iris_info, pupil_info = detectar_iris_pupila(imagem_processada, mask_esclera) if iris_info is None or pupil_info is None: return imagem, "Não foi possível detectar íris ou pupila corretamente." analise_setorial = analisar_textura_setorial(imagem_processada, iris_info, pupil_info) # Avaliando circularidade metricas = { 'pupila': { 'raio': pupil_info[2], 'circularidade': avaliar_circularidade(pupil_info) }, 'iris': { 'densidade_media': np.mean([dados['contraste'] for dados in analise_setorial.values()]), 'homogeneidade': np.mean([dados['homogeneidade'] for dados in analise_setorial.values()]) }, } metricas = validar_metricas(metricas) analisador = AnalisadorIridologicoNLP() interpretacao_nlp = analisador.gerar_interpretacao(metricas) relatorio = "ANÁLISE IRIDOLÓGICA DETALHADA\n\n" relatorio += "1. MEDIDAS ESTRUTURAIS\n" relatorio += f"Pupila: Centro ({pupil_info[0]}, {pupil_info[1]}), Raio {pupil_info[2]}px\n" relatorio += "2. ANÁLISE SETORIAL\n" for setor, dados in analise_setorial.items(): relatorio += f"Setor {setor}: Contraste {dados['contraste']}, Homogeneidade {dados['homogeneidade']}\n" relatorio += f"3. INTERPRETAÇÃO NLP: {interpretacao_nlp}\n" return imagem, relatorio except Exception as e: return imagem, f"Erro durante o processamento: {str(e)}" with gr.Blocks(theme=theme, title="Análise Iridológica Avançada") as interface: gr.Markdown(""" # Sistema Avançado de Análise Iridológica ### Detecção precisa de esclera, íris e pupila com análise setorial e interpretação em linguagem natural """) with gr.Row(): input_image = gr.Image(label="Imagem do Olho", type="numpy") output_image = gr.Image(label="Análise Visual") analysis_btn = gr.Button("Analisar Olho", variant="primary") output_text = gr.Textbox(label="Relatório de Análise", lines=20) analysis_btn.click( fn=processar_imagem, inputs=[input_image], outputs=[output_image, output_text] ) return interface def main(): interface = criar_interface() interface.launch(share=True) if __name__ == "__main__": main()