Cálculo de Distância usando Ultralytics YOLO26
O que é o Cálculo de Distância?
Medir o intervalo entre dois objetos é conhecido como cálculo de distância dentro de um espaço especificado. No caso do Ultralytics YOLO26, o centroide da caixa delimitadora é empregado para calcular a distância para as caixas delimitadoras destacadas pelo usuário.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Visuais
| Cálculo de Distância usando Ultralytics YOLO26 |
|---|
![]() |
Vantagens do Cálculo de Distância
- Precisão de Localização: Aprimora o posicionamento espacial preciso em tarefas de visão computacional.
- Estimativa de Tamanho: Permite a estimativa do tamanho do objeto para uma melhor compreensão contextual.
- Compreensão de Cena: Melhora a compreensão de cenas em 3D para uma melhor tomada de decisão em aplicações como veículos autônomos e sistemas de vigilância.
- Prevenção de Colisões: Permite que sistemas detectem colisões potenciais monitorando distâncias entre objetos em movimento.
- Análise Espacial: Facilita a análise das relações e interações entre objetos dentro do ambiente monitorado.
Cálculo de Distância
- Clique em duas caixas delimitadoras quaisquer com o botão esquerdo do mouse para calcular a distância.
- Use o botão direito do mouse para excluir todos os pontos desenhados.
- Clique com o botão esquerdo em qualquer lugar no quadro para adicionar novos pontos.
A distância é uma estimativa
A distância é uma estimativa e pode não ser totalmente precisa, pois é calculada usando dados 2D, que carecem de informações de profundidade.
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
model="yolo26n.pt", # path to the YOLO26 model file.
show=True, # display the output
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = distancecalculator(im0)
print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windowsArgumentos de DistanceCalculation()
Aqui está uma tabela com os argumentos de DistanceCalculation:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
model | str | None | Caminho para um arquivo de modelo Ultralytics YOLO. |
Você também pode usar vários argumentos de track na solução DistanceCalculation.
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Especifica o algoritmo de rastreamento a ser usado, por exemplo, bytetrack.yaml ou botsort.yaml. |
conf | float | 0.1 | Define o limite de confiança para as detecções; valores mais baixos permitem que mais objetos sejam rastreados, mas podem incluir falsos positivos. |
iou | float | 0.7 | Define o limite de Intersection over Union (IoU) para filtrar detecções sobrepostas. |
classes | list | None | Filtra resultados pelo índice da classe. Por exemplo, classes=[0, 2, 3] rastreia apenas as classes especificadas. |
verbose | bool | True | Controla a exibição dos resultados de rastreamento, fornecendo uma saída visual dos objetos rastreados. |
device | str | None | Especifica o dispositivo para inferência (por exemplo, cpu, cuda:0 ou 0). Permite que os usuários selecionem entre CPU, uma GPU específica ou outros dispositivos de computação para a execução do modelo. |
Além disso, os seguintes argumentos de visualização estão disponíveis:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
show | bool | False | Se True, exibe as imagens ou vídeos anotados numa janela. Útil para feedback visual imediato durante o desenvolvimento ou teste. |
line_width | int or None | None | Especifica a largura da linha das caixas delimitadoras. Se None, a largura da linha é ajustada automaticamente com base no tamanho da imagem. Oferece personalização visual para clareza. |
show_conf | bool | True | Exibe a pontuação de confiança para cada deteção ao lado do rótulo. Dá uma noção da certeza do modelo para cada deteção. |
show_labels | bool | True | Exibe rótulos para cada deteção na saída visual. Proporciona uma compreensão imediata dos objetos detetados. |
Detalhes da Implementação
A classe DistanceCalculation funciona rastreando objetos em quadros de vídeo e calculando a distância euclidiana entre os centroides das caixas delimitadoras selecionadas. Quando você clica em dois objetos, a solução:
- Extrai os centroides (pontos centrais) das caixas delimitadoras selecionadas
- Calcula a distância euclidiana entre esses centroides em pixels
- Exibe a distância no quadro com uma linha de conexão entre os objetos
A implementação utiliza o método mouse_event_for_distance para lidar com as interações do mouse, permitindo que os usuários selecionem objetos e limpem as seleções conforme necessário. O método process lida com o processamento quadro a quadro, rastreando objetos e calculando distâncias.
Aplicações
O cálculo de distância com YOLO26 tem inúmeras aplicações práticas:
- Análise de Varejo: Meça a proximidade do cliente com os produtos e analise a eficácia do layout da loja
- Segurança Industrial: Monitore distâncias seguras entre trabalhadores e máquinas
- Gestão de Tráfego: Analise o espaçamento entre veículos e detecte direção perigosa
- Análise Esportiva: Calcule distâncias entre jogadores, a bola e posições principais no campo
- Saúde: Garanta o distanciamento adequado em áreas de espera e monitore o movimento do paciente
- Robótica: Permita que robôs mantenham distâncias apropriadas de obstáculos e pessoas
FAQ
Como calculo distâncias entre objetos usando Ultralytics YOLO26?
Para calcular distâncias entre objetos usando Ultralytics YOLO26, você precisa identificar os centroides das caixas delimitadoras dos objetos detectados. Este processo envolve inicializar a classe DistanceCalculation do módulo solutions da Ultralytics e usar as saídas de rastreamento do modelo para calcular as distâncias.
Quais são as vantagens de usar o cálculo de distância com Ultralytics YOLO26?
Usar o cálculo de distância com Ultralytics YOLO26 oferece várias vantagens:
- Precisão de Localização: Fornece posicionamento espacial preciso para objetos.
- Estimativa de Tamanho: Ajuda a estimar tamanhos físicos, contribuindo para uma melhor compreensão contextual.
- Compreensão de Cena: Aprimora a compreensão de cenas em 3D, ajudando na melhor tomada de decisão em aplicações como direção autônoma e vigilância.
- Processamento em Tempo Real: Realiza cálculos instantaneamente, tornando-o adequado para análise de vídeo ao vivo.
- Capacidades de Integração: Funciona perfeitamente com outras soluções YOLO26, como rastreamento de objetos e estimativa de velocidade.
Posso realizar o cálculo de distância em fluxos de vídeo em tempo real com Ultralytics YOLO26?
Sim, você pode realizar o cálculo de distância em fluxos de vídeo em tempo real com Ultralytics YOLO26. O processo envolve capturar quadros de vídeo usando OpenCV, executar detecção de objetos YOLO26 e usar a classe DistanceCalculation para calcular distâncias entre objetos em quadros sucessivos. Para uma implementação detalhada, consulte o exemplo de fluxo de vídeo.
Como excluo pontos desenhados durante o cálculo de distância usando Ultralytics YOLO26?
Para excluir pontos desenhados durante o cálculo de distância com Ultralytics YOLO26, você pode usar um clique com o botão direito do mouse. Esta ação limpará todos os pontos que você desenhou. Para mais detalhes, consulte a seção de notas em exemplo de cálculo de distância.
Quais são os argumentos principais para inicializar a classe DistanceCalculation no Ultralytics YOLO26?
Os argumentos principais para inicializar a classe DistanceCalculation no Ultralytics YOLO26 incluem:
model: Caminho para o arquivo de modelo YOLO26.tracker: Algoritmo de rastreamento a ser usado (o padrão é 'botsort.yaml').conf: Limite de confiança para detecções.show: Sinalizador para exibir a saída.
Para uma lista exaustiva e valores padrão, consulte os argumentos de DistanceCalculation.
