Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #40711

    Ola, percebi aqui que nao estao mostrando a segmentação via python (embora a informação esteja sendo gerado pelo resultado.mask.data, só esta sendo mostrado os bounding boxes atualmente)

    #40738
    Gabriel Alves
    Keymaster

      Olá Julio!

      Sim, a informação é acessível agora pelo resultado.mask.data, porém a API mudou recentemente e com isso tem que utilizar um outro algoritmo para poder desenhar as máscaras manualmente. Como ainda não temos esse código pronto, sugiro que para a segmentação utilize a implementação via CLI, pois irá funcionar corretamente e de modo mais prático.

      #47142
      Flávio Santiago
      Participant

        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)

        #47153
        Gabriel Alves
        Keymaster

          Olá Flávio! Excelente, obrigado pela sua contribuição

          Para não se preocupar com as funções de desenho também é possível usar como alternativa a implementação via CLI, o que pode ser um pouco mais prático

        Viewing 4 posts - 1 through 4 (of 4 total)
        • You must be logged in to reply to this topic.