DHEIVER commited on
Commit
1dceda3
1 Parent(s): cee1bd3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +83 -83
app.py CHANGED
@@ -614,90 +614,90 @@ def criar_interface():
614
  )
615
 
616
  def processar_imagem(imagem):
617
- try:
618
- # Pré-processamento da imagem
619
- imagem_processada = pre_processar_imagem(imagem)
620
-
621
- # Detectar esclera
622
- mask_esclera = detectar_esclera(imagem_processada)
623
-
624
- # Detectar íris e pupila
625
- iris_info, pupil_info = detectar_iris_pupila(imagem_processada, mask_esclera)
626
-
627
- if iris_info is None or pupil_info is None:
628
- return imagem, "Não foi possível detectar íris ou pupila corretamente."
629
-
630
- # Análise de textura setorial
631
- analise_setorial = analisar_textura_setorial(imagem_processada, iris_info, pupil_info)
632
-
633
- # Análise do collarette
634
- info_collarette = analisar_collarette(imagem_processada, iris_info, pupil_info)
635
-
636
- # Criar visualização da imagem de saída
637
- output_img = imagem.copy()
638
- ix, iy, ir = iris_info
639
- px, py, pr = pupil_info
640
-
641
- # Desenhar esclera
642
- contours, _ = cv2.findContours(mask_esclera, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
643
- cv2.drawContours(output_img, contours, -1, (255, 255, 0), 1) # Esclera em amarelo
644
-
645
- # Desenhar íris
646
- cv2.circle(output_img, (ix, iy), ir, (0, 255, 0), 2) # Íris em verde
647
-
648
- # Desenhar pupila
649
- cv2.circle(output_img, (px, py), pr, (255, 0, 0), 2) # Pupila em vermelho
650
-
651
- # Desenhar setores
652
- for i in range(12):
653
- ang = i * 30
654
- rad = np.radians(ang)
655
- end_x = int(ix + ir * np.cos(rad))
656
- end_y = int(iy + ir * np.sin(rad))
657
- cv2.line(output_img, (ix, iy), (end_x, end_y), (255, 255, 255), 1) # Linhas brancas para setores
658
-
659
- # Adicionando feedback visual se o collarette for detectado
660
- if info_collarette:
661
- cv2.putText(output_img, "Collarette Detected", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)
662
-
663
- # Preparar métricas para análise NLP
664
- metricas = {
665
- 'pupila': {
666
- 'raio': pr,
667
- 'circularidade': avaliar_circularidade(pupil_info)
668
- },
669
- 'iris': {
670
- 'densidade_media': np.mean([dados['contraste'] for dados in analise_setorial.values()]),
671
- 'homogeneidade': np.mean([dados['homogeneidade'] for dados in analise_setorial.values()])
672
- },
673
- 'collarette': info_collarette
674
- }
675
-
676
- # Validar métricas
677
- metricas = validar_metricas(metricas)
678
-
679
- # Integrar análise NLP
680
- interpretacao_nlp = integrar_analise_nlp(metricas)
681
-
682
- # Gerar relatório
683
- relatorio = "ANÁLISE IRIDOLÓGICA DETALHADA\n\n"
684
- relatorio += "1. MEDIDAS ESTRUTURAIS\n"
685
- relatorio += f"Pupila: Centro ({px}, {py}), Raio {pr}px\n"
686
- relatorio += f"Íris: Centro ({ix}, {iy}), Raio {ir}px\n"
687
-
688
- # Adicionar análise setorial
689
- relatorio += "2. ANÁLISE SETORIAL\n"
690
- for setor, dados in analise_setorial.items():
691
- relatorio += f"Setor {setor}: Contraste {dados['contraste']}, Homogeneidade {dados['homogeneidade']}\n"
692
-
693
- relatorio += f"3. COLLARETTE: {info_collarette}\n"
694
- relatorio += f"4. INTERPRETAÇÃO NLP: {interpretacao_nlp}\n"
695
-
696
- return output_img, relatorio
697
-
698
- except Exception as e:
699
- return imagem, f"Erro durante o processamento: {str(e)}"
700
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
701
  # Interface
702
  with gr.Blocks(theme=theme, title="Análise Iridológica Avançada") as interface:
703
  gr.Markdown("""
 
614
  )
615
 
616
  def processar_imagem(imagem):
617
+ try:
618
+ # Pré-processamento da imagem
619
+ imagem_processada = pre_processar_imagem(imagem)
620
+
621
+ # Detectar esclera
622
+ mask_esclera = detectar_esclera(imagem_processada)
623
+
624
+ # Detectar íris e pupila
625
+ iris_info, pupil_info = detectar_iris_pupila(imagem_processada, mask_esclera)
626
+
627
+ if iris_info is None or pupil_info is None:
628
+ return imagem, "Não foi possível detectar íris ou pupila corretamente."
629
+
630
+ # Análise de textura setorial
631
+ analise_setorial = analisar_textura_setorial(imagem_processada, iris_info, pupil_info)
632
+
633
+ # Análise do collarette
634
+ info_collarette = analisar_collarette(imagem_processada, iris_info, pupil_info)
635
+
636
+ # Criar visualização da imagem de saída
637
+ output_img = imagem.copy()
638
+ ix, iy, ir = iris_info
639
+ px, py, pr = pupil_info
640
+
641
+ # Desenhar esclera
642
+ contours, _ = cv2.findContours(mask_esclera, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
643
+ cv2.drawContours(output_img, contours, -1, (255, 255, 0), 1) # Esclera em amarelo
644
+
645
+ # Desenhar íris
646
+ cv2.circle(output_img, (ix, iy), ir, (0, 255, 0), 2) # Íris em verde
647
+
648
+ # Desenhar pupila
649
+ cv2.circle(output_img, (px, py), pr, (255, 0, 0), 2) # Pupila em vermelho
650
+
651
+ # Desenhar setores
652
+ for i in range(12):
653
+ ang = i * 30
654
+ rad = np.radians(ang)
655
+ end_x = int(ix + ir * np.cos(rad))
656
+ end_y = int(iy + ir * np.sin(rad))
657
+ cv2.line(output_img, (ix, iy), (end_x, end_y), (255, 255, 255), 1) # Linhas brancas para setores
658
+
659
+ # Adicionando feedback visual se o collarette for detectado
660
+ if info_collarette:
661
+ cv2.putText(output_img, "Collarette Detected", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
662
 
663
+ # Preparar métricas para análise NLP
664
+ metricas = {
665
+ 'pupila': {
666
+ 'raio': pr,
667
+ 'circularidade': avaliar_circularidade(pupil_info)
668
+ },
669
+ 'iris': {
670
+ 'densidade_media': np.mean([dados['contraste'] for dados in analise_setorial.values()]),
671
+ 'homogeneidade': np.mean([dados['homogeneidade'] for dados in analise_setorial.values()])
672
+ },
673
+ 'collarette': info_collarette
674
+ }
675
+
676
+ # Validar métricas
677
+ metricas = validar_metricas(metricas)
678
+
679
+ # Integrar análise NLP
680
+ interpretacao_nlp = integrar_analise_nlp(metricas)
681
+
682
+ # Gerar relatório
683
+ relatorio = "ANÁLISE IRIDOLÓGICA DETALHADA\n\n"
684
+ relatorio += "1. MEDIDAS ESTRUTURAIS\n"
685
+ relatorio += f"Pupila: Centro ({px}, {py}), Raio {pr}px\n"
686
+ relatorio += f"Íris: Centro ({ix}, {iy}), Raio {ir}px\n"
687
+
688
+ # Adicionar análise setorial
689
+ relatorio += "2. ANÁLISE SETORIAL\n"
690
+ for setor, dados in analise_setorial.items():
691
+ relatorio += f"Setor {setor}: Contraste {dados['contraste']}, Homogeneidade {dados['homogeneidade']}\n"
692
+
693
+ relatorio += f"3. COLLARETTE: {info_collarette}\n"
694
+ relatorio += f"4. INTERPRETAÇÃO NLP: {interpretacao_nlp}\n"
695
+
696
+ return output_img, relatorio
697
+
698
+ except Exception as e:
699
+ return imagem, f"Erro durante o processamento: {str(e)}"
700
+
701
  # Interface
702
  with gr.Blocks(theme=theme, title="Análise Iridológica Avançada") as interface:
703
  gr.Markdown("""