DHEIVER commited on
Commit
cc85618
1 Parent(s): d39e689

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +85 -0
app.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import numpy as np
3
+ from analisador_iridologico import (
4
+ pre_processar_imagem, detectar_esclera, detectar_iris_pupila,
5
+ analisar_textura_setorial, validar_metricas, AnalisadorIridologicoNLP
6
+ )
7
+
8
+ def criar_interface():
9
+ theme = gr.themes.Soft(
10
+ primary_hue="teal",
11
+ secondary_hue="green",
12
+ ).set(
13
+ body_text_color="#2A9D8F",
14
+ block_title_text_color="#264653",
15
+ block_label_text_color="#2A9D8F",
16
+ input_background_fill="#E9F5F3",
17
+ button_primary_background_fill="#2A9D8F",
18
+ button_primary_background_fill_dark="#264653",
19
+ )
20
+
21
+ def processar_imagem(imagem):
22
+ try:
23
+ imagem_processada = pre_processar_imagem(imagem)
24
+ mask_esclera = detectar_esclera(imagem_processada)
25
+ iris_info, pupil_info = detectar_iris_pupila(imagem_processada, mask_esclera)
26
+
27
+ if iris_info is None or pupil_info is None:
28
+ return imagem, "Não foi possível detectar íris ou pupila corretamente."
29
+
30
+ analise_setorial = analisar_textura_setorial(imagem_processada, iris_info, pupil_info)
31
+ metricas = {
32
+ 'pupila': {
33
+ 'raio': pupil_info[2],
34
+ 'circularidade': avaliar_circularidade(pupil_info)
35
+ },
36
+ 'iris': {
37
+ 'densidade_media': np.mean([dados['contraste'] for dados in analise_setorial.values()]),
38
+ 'homogeneidade': np.mean([dados['homogeneidade'] for dados in analise_setorial.values()])
39
+ },
40
+ }
41
+
42
+ metricas = validar_metricas(metricas)
43
+ analisador = AnalisadorIridologicoNLP()
44
+ interpretacao_nlp = analisador.gerar_interpretacao(metricas)
45
+
46
+ relatorio = "ANÁLISE IRIDOLÓGICA DETALHADA\n\n"
47
+ relatorio += "1. MEDIDAS ESTRUTURAIS\n"
48
+ relatorio += f"Pupila: Centro ({pupil_info[0]}, {pupil_info[1]}), Raio {pupil_info[2]}px\n"
49
+ relatorio += "2. ANÁLISE SETORIAL\n"
50
+ for setor, dados in analise_setorial.items():
51
+ relatorio += f"Setor {setor}: Contraste {dados['contraste']}, Homogeneidade {dados['homogeneidade']}\n"
52
+ relatorio += f"3. INTERPRETAÇÃO NLP: {interpretacao_nlp}\n"
53
+
54
+ return imagem, relatorio
55
+
56
+ except Exception as e:
57
+ return imagem, f"Erro durante o processamento: {str(e)}"
58
+
59
+ with gr.Blocks(theme=theme, title="Análise Iridológica Avançada") as interface:
60
+ gr.Markdown("""
61
+ # Sistema Avançado de Análise Iridológica
62
+ ### Detecção precisa de esclera, íris e pupila com análise setorial e interpretação em linguagem natural
63
+ """)
64
+
65
+ with gr.Row():
66
+ input_image = gr.Image(label="Imagem do Olho", type="numpy")
67
+ output_image = gr.Image(label="Análise Visual")
68
+
69
+ analysis_btn = gr.Button("Analisar Olho", variant="primary")
70
+ output_text = gr.Textbox(label="Relatório de Análise", lines=20)
71
+
72
+ analysis_btn.click(
73
+ fn=processar_imagem,
74
+ inputs=[input_image],
75
+ outputs=[output_image, output_text]
76
+ )
77
+
78
+ return interface
79
+
80
+ def main():
81
+ interface = criar_interface()
82
+ interface.launch(share=True)
83
+
84
+ if __name__ == "__main__":
85
+ main()