Responder a: Resultados da segmentação

#47142
Flávio Santiago
Participante

    Boa noite,
    Estou fazendo o curso e me deparei com este mesmo problema, mas antes de vir ao fórum, submeti o código ao ChatGPT e ele deu a seguinte solução em um novo código desenhando a máscara manualmente. Testei com a foto do gato no jardim e funcionou, porém não fez a segmentação de parte do guarda chuva que tem na imagem.
    Por enquanto não vou seguir na melhora do código sugerido pelo chat, se alguém quiser continuar o desenvolvimento, segue abaixo:

    import numpy as np
    import cv2

    # Processa os resultados da predição
    resultados = model_seg.predict(source=img, conf=0.6)
    result = resultados[0]

    # Obtém máscaras e caixas delimitadoras
    masks = result.masks.data.cpu().numpy() # Máscaras
    boxes = result.boxes.data.cpu().numpy() # Caixas delimitadoras

    # Aplica máscaras na imagem
    for mask in masks:
    # Redimensiona a máscara para as dimensões da imagem original
    mask_resized = cv2.resize(mask, (img.shape[1], img.shape[0]), interpolation=cv2.INTER_NEAREST)
    mask_binary = (mask_resized > 0.5).astype(np.uint8) * 255 # Binariza a máscara
    color = (0, 255, 0) # Cor da máscara (verde, no exemplo)

    # Cria um overlay colorido
    mask_overlay = np.zeros_like(img, dtype=np.uint8)
    mask_overlay[mask_binary == 255] = color

    # Combina a máscara com a imagem original (transparência)
    alpha = 0.5 # Transparência
    img = cv2.addWeighted(img, 1 – alpha, mask_overlay, alpha, 0)

    # Desenha as caixas delimitadoras na imagem
    resultado_img = funcoes_desenho.desenha_caixas(img, boxes)
    mostrar(resultado_img)