File size: 2,061 Bytes
adf2111
 
 
ab0fc4c
7af9a08
adf2111
abed96a
 
 
 
adf2111
2283b5b
 
 
 
adf2111
2283b5b
73036df
e0ee69d
2283b5b
73036df
2283b5b
73036df
e0ee69d
ab0fc4c
 
 
 
 
 
 
7af9a08
ab0fc4c
 
 
7af9a08
ab0fc4c
adf2111
2283b5b
907b41c
adf2111
2283b5b
ab0fc4c
 
adf2111
 
2283b5b
907b41c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import gradio as gr
import tensorflow as tf
import numpy as np
import cv2
from PIL import Image, ImageDraw, ImageFont

# Carregue seu modelo TensorFlow treinado
model = tf.keras.models.load_model('modelo_treinado.h5')

# Defina uma função para fazer previsões
def classify_image(input_image):
    # Redimensione a imagem para as dimensões corretas (192x256)
    input_image = tf.image.resize(input_image, (192, 256))  # Redimensione para as dimensões esperadas
    input_image = (input_image / 255.0)  # Normalize para [0, 1]
    input_image = np.expand_dims(input_image, axis=0)  # Adicione a dimensão de lote

    # Faça a previsão usando o modelo
    prediction = model.predict(input_image)

    # Assumindo que o modelo retorna probabilidades para duas classes, você pode retornar a classe com a maior probabilidade
    class_index = np.argmax(prediction)
    class_labels = ["Normal", "Cataract"]  # Substitua pelas suas etiquetas de classe reais
    predicted_class = class_labels[class_index]

    # Crie uma imagem composta com a caixa de identificação de objeto e o rótulo de previsão
    output_image = (input_image[0] * 255).astype('uint8')
    output_image_with_box = output_image.copy()

    # Desenhe uma caixa de identificação de objeto no output_image_with_box (apenas como exemplo)
    if predicted_class == "Cataract":  # Adicione sua lógica para desenhar a caixa com base na classe
        cv2.rectangle(output_image_with_box, (50, 50), (150, 150), (0, 255, 0), 2)  # Exemplo de caixa verde

    # Escreva o rótulo de previsão no output_image_with_box
    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(output_image_with_box, f"Predicted Class: {predicted_class}", (10, 30), font, 0.7, (0, 0, 255), 2)

    return output_image_with_box

# Crie uma interface Gradio
input_interface = gr.Interface(
    fn=classify_image,
    inputs="image",  # Especifique o tipo de entrada como "image"
    outputs="image",  # Especifique o tipo de saída como "image"
    live=True
)

# Inicie o aplicativo Gradio
input_interface.launch()