Cálculo da distância utilizando Ultralytics YOLO11
O que é o cálculo da distância?
A medição da distância entre dois objectos é conhecida como cálculo de distância dentro de um determinado espaço. No caso do Ultralytics YOLO11o centróide da caixa delimitadora é utilizado para calcular a distância das caixas delimitadoras destacadas pelo utilizador.
Ver: Cálculo da distância utilizando Ultralytics YOLO11
Visuais
Cálculo da distância utilizando Ultralytics YOLO11 |
---|
![]() |
Vantagens do cálculo da distância?
- Precisão de localização: Melhora o posicionamento espacial exato em tarefas de visão por computador.
- Estimativa de tamanho: Permite estimar o tamanho do objeto para uma melhor compreensão contextual.
- Compreensão de cenas: Melhora a compreensão de cenas 3D para uma melhor tomada de decisões em aplicações como veículos autónomos e sistemas de vigilância.
- Prevenção de colisões: Permite que os sistemas detectem potenciais colisões através da monitorização das distâncias entre objectos em movimento.
- Análise espacial: Facilita a análise das relações e interações entre objectos no ambiente monitorizado.
Cálculo da distância
- Clique em quaisquer duas caixas delimitadoras com o botão esquerdo do rato para calcular a distância
- O clique com o botão direito do rato elimina todos os pontos desenhados
- O clique esquerdo do rato pode ser utilizado para desenhar pontos
A distância é estimada
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data,
which lacks information about the object's depth.
Cálculo da distância utilizando o 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="yolo11n.pt", # path to the YOLO11 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 os DistanceCalculation
argumentos:
Argumento | Tipo | Predefinição | Descrição |
---|---|---|---|
model |
str |
None |
Caminho para o ficheiro do modelo Ultralytics YOLO . |
Também é possível utilizar vários track
argumentos no DistanceCalculation
solução.
Argumento | Tipo | Predefinição | Descrição |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Especifica o algoritmo de seguimento a utilizar, por exemplo, bytetrack.yaml ou botsort.yaml . |
conf |
float |
0.3 |
Define o limiar de confiança para as detecções; valores mais baixos permitem o seguimento de mais objectos, mas podem incluir falsos positivos. |
iou |
float |
0.5 |
Define o limiar 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] só rastreia as classes especificadas. |
verbose |
bool |
True |
Controla a apresentação dos resultados do seguimento, fornecendo uma saída visual dos objectos seguidos. |
device |
str |
None |
Especifica o dispositivo para inferência (por exemplo, cpu , cuda:0 ou 0 ). Permite aos utilizadores selecionar entre CPU, um GPU específico, ou outros dispositivos de computação para a execução do modelo. |
Além disso, estão disponíveis os seguintes argumentos de visualização:
Argumento | Tipo | Predefinição | Descrição |
---|---|---|---|
show |
bool |
False |
Se True apresenta as imagens ou vídeos anotados numa janela. Útil para feedback visual imediato durante o desenvolvimento ou teste. |
line_width |
None or int |
None |
Especifica a largura da linha das caixas delimitadoras. Se None A largura da linha é ajustada automaticamente com base no tamanho da imagem. Proporciona uma personalização visual para maior clareza. |
Detalhes de implementação
O DistanceCalculation
funciona através do rastreio de objectos em fotogramas de vídeo e do cálculo da distância euclidiana entre os centróides das caixas delimitadoras selecionadas. Quando se clica em dois objectos, a solução:
- Extrai os centróides (pontos centrais) das caixas delimitadoras selecionadas
- Calcula a distância euclidiana entre estes centróides em pixéis
- Apresenta a distância na moldura com uma linha de ligação entre os objectos
A implementação utiliza o mouse_event_for_distance
para lidar com as interações do rato, permitindo aos utilizadores selecionar objectos e limpar selecções conforme necessário. O método process
trata do processamento fotograma a fotograma, do seguimento dos objectos e do cálculo das distâncias.
Aplicações
O cálculo de distâncias com YOLO11 tem inúmeras aplicações práticas:
- Análise de retalho: Medir a proximidade do cliente aos produtos e analisar a eficácia da disposição da loja
- Segurança industrial: Monitorizar as distâncias de segurança entre trabalhadores e máquinas
- Gestão do tráfego: Analisar o espaçamento entre veículos e detetar a colagem de veículos
- Análise desportiva: Calcular distâncias entre jogadores, a bola e posições-chave no campo
- Cuidados de saúde: Assegurar o distanciamento adequado nas áreas de espera e monitorizar o movimento dos doentes
- Robótica: Permitir que os robots mantenham distâncias adequadas em relação a obstáculos e pessoas
FAQ
Como calcular as distâncias entre objectos utilizando Ultralytics YOLO11 ?
Para calcular distâncias entre objectos utilizando Ultralytics YOLO11Para identificar os centróides da caixa delimitadora dos objectos detectados. Este processo envolve a inicialização do DistanceCalculation
classe de Ultralytics' solutions
e utilizando os resultados de seguimento do modelo para calcular as distâncias.
Quais são as vantagens de utilizar o cálculo de distâncias com Ultralytics YOLO11 ?
A utilização do cálculo da distância com Ultralytics YOLO11 oferece várias vantagens:
- Precisão de localização: Fornece um posicionamento espacial preciso para os objectos.
- Estimativa de tamanho: Ajuda a estimar tamanhos físicos, contribuindo para uma melhor compreensão do contexto.
- Compreensão de cenas: Melhora a compreensão de cenas 3D, ajudando a melhorar a tomada de decisões em aplicações como a condução autónoma e a vigilância.
- Processamento em tempo real: Efectua cálculos em tempo real, tornando-o adequado para análise de vídeo em direto.
- Capacidades de integração: Funciona na perfeição com outras soluções YOLO11 , como o seguimento de objectos e a estimativa de velocidade.
Posso efetuar o cálculo da distância em fluxos de vídeo em tempo real com Ultralytics YOLO11 ?
Sim, pode efetuar o cálculo da distância em fluxos de vídeo em tempo real com Ultralytics YOLO11 . O processo envolve a captura de fotogramas de vídeo utilizando OpenCV, a correr YOLO11 deteção de objectose utilizando o DistanceCalculation
para calcular as distâncias entre objectos em fotogramas sucessivos. Para uma implementação detalhada, consulte a classe exemplo de fluxo de vídeo.
Como é que elimino os pontos desenhados durante o cálculo da distância utilizando Ultralytics YOLO11 ?
Para apagar os pontos desenhados durante o cálculo da distância com Ultralytics YOLO11 , pode utilizar o botão direito do rato. Esta ação irá apagar todos os pontos que desenhou. Para mais detalhes, consulte a secção de notas sob o exemplo de cálculo de distância.
Quais são os argumentos chave para inicializar a classe DistanceCalculation em Ultralytics YOLO11 ?
Os principais argumentos para inicializar o DistanceCalculation
classe em Ultralytics YOLO11 incluem:
model
: Caminho para o ficheiro do modelo YOLO11 .tracker
: Algoritmo de rastreio a utilizar (a predefinição é 'botsort.yaml').conf
: Limiar de confiança para as detecções.show
: Sinalizador para visualizar a saída.
Para uma lista exaustiva e valores por defeito, consulte os argumentos de DistanceCalculation.