Cálculo de Distância usando Ultralytics YOLO26
O que é Cálculo de Distância?
Medir a lacuna entre dois objetos é conhecido como cálculo de distância dentro de um espaço especificado. No caso de Ultralytics YOLO26, o centroide da bounding box é empregado para calcular a distância para bounding boxes destacadas pelo usuário.
Assista: Como estimar a distância entre objetos detectados com Ultralytics YOLO em Pixels 🚀
Visuais
| Cálculo de Distância usando Ultralytics YOLO26 |
|---|
![]() |
Vantagens do Cálculo de Distância
- Precisão de Localização: Melhora 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 da cena 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 os sistemas detectem colisões potenciais, monitorando as distâncias entre objetos em movimento.
- Análise Espacial: Facilita a análise das relações e interações dos objetos dentro do ambiente monitorado.
Cálculo de Distância
- Clique em duas caixas delimitadoras 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 do frame para adicionar novos pontos.
A distância é uma estimativa
A distância é uma estimativa e pode não ser totalmente precisa porque é calculada usando dados 2D, que carecem de informações de profundidade.
Cálculo de Distância usando Ultralytics YOLO
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 windows
DistanceCalculation() Argumentos
Aqui está uma tabela com o DistanceCalculation argumentos:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
model | str | None | Caminho para um arquivo de modelo Ultralytics YOLO. |
Também pode utilizar vários track argumentos no DistanceCalculation solução.
| Argumento | Tipo | Padrã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 detecções; valores mais baixos permitem que mais objetos sejam rastreados, mas podem incluir falsos positivos. |
iou | float | 0.7 | Define o limite de Intersecção sobre União (IoU) para filtrar detecções sobrepostas. |
classes | list | None | Filtra os resultados por índice de 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 | Padrão | Descrição |
|---|---|---|---|
show | bool | False | Se True, exibe as imagens ou vídeos anotados em uma 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. Fornece personalização visual para clareza. |
show_conf | bool | True | Exibe o score de confiança para cada detecção junto com o rótulo. Dá uma ideia da certeza do modelo para cada detecção. |
show_labels | bool | True | Exibe rótulos para cada detecção na saída visual. Fornece compreensão imediata dos objetos detectados. |
Detalhes da Implementação
O DistanceCalculation A classe funciona rastreando objetos em frames de vídeo e calculando a distância Euclidiana entre os centroides das bounding boxes selecionadas. Quando você clica em dois objetos, a solução:
- Extrai os centroides (pontos centrais) das bounding boxes selecionadas
- Calcula a distância Euclidiana entre esses centroides em pixels
- Exibe a distância no frame com uma linha de conexão entre os objetos
A implementação usa o mouse_event_for_distance método para lidar com interações do mouse, permitindo que os usuários selecionem objetos e limpem as seleções conforme necessário. process O método lida com o processamento quadro a quadro, rastreando objetos e calculando distâncias.
Aplicações
O cálculo de distância com YOLO26 possui inúmeras aplicações práticas:
- Análise de Varejo: Meça a proximidade do cliente aos produtos e analise a eficácia do layout da loja
- Segurança Industrial: Monitorize distâncias de segurança entre trabalhadores e máquinas.
- Gestão de Tráfego: Analise o espaçamento entre veículos e detete o seguimento excessivo.
- Análise Desportiva: Calcule as distâncias entre os jogadores, a bola e as posições-chave no campo.
- Saúde: Garanta o distanciamento adequado nas áreas de espera e monitore a movimentação de pacientes
- Robótica: Permite que os robôs mantenham distâncias adequadas de obstáculos e pessoas
FAQ
Como faço para calcular distâncias entre objetos usando Ultralytics YOLO26?
Para calcular distâncias entre objetos usando Ultralytics YOLO26, você precisa identificar os centroides da caixa delimitadora dos objetos detectados. Este processo envolve a inicialização do DistanceCalculation classe da Ultralytics' solutions módulo e usando 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?
O uso do cálculo de distância com Ultralytics YOLO26 oferece diversas 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: Melhora a compreensão da cena 3D, auxiliando na melhoria da tomada de decisões em aplicações como direção autônoma e vigilância.
- Processamento em Tempo Real: Realiza cálculos em tempo real, 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 streams de vídeo em tempo real com Ultralytics YOLO26?
Sim, é possível realizar o cálculo de distância em streams de vídeo em tempo real com Ultralytics YOLO26. O processo envolve a captura de quadros de vídeo usando OpenCV, executando YOLO26 detecção de objetos, e usando o DistanceCalculation classe para calcular distâncias entre objetos em frames sucessivos. Para uma implementação detalhada, consulte o Exemplo de fluxo de vídeo.
Como faço para excluir 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 no exemplo de cálculo de distância.
Quais são os principais argumentos para inicializar a classe DistanceCalculation em Ultralytics YOLO26?
Os principais argumentos para inicializar o DistanceCalculation classe em Ultralytics YOLO26 incluem:
model: Caminho para o arquivo do modelo YOLO26.tracker: Algoritmo de track a ser usado (o padrão é 'botsort.yaml').conf: Limiar 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.
