Home › Fóruns › Fórum Detecção de Objetos com YOLO, Darknet, OpenCV e Python › Resultados da segmentação
Marcado: Segmentação+de+imagens+(YOLOv8)
- Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 1 mês, 2 semanas atrás por
Gabriel Alves.
- AutorPosts
- 30 de maio de 2023 às 12:00 #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)
4 de junho de 2023 às 22:31 #40738Olá 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.
29 de dezembro de 2024 às 01:04 #47142Boa 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)1 de janeiro de 2025 às 23:52 #47153Olá 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
- AutorPosts
- Você deve fazer login para responder a este tópico.