Resultados da segmentação

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #40711
    Julio Patti Pereira
    Participante

      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
      Moderador

        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
        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)

          #47153
          Gabriel Alves
          Moderador

            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

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.