Cálculo da distância utilizando Ultralytics YOLOv8
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 YOLOv8o centróide da caixa delimitadora é utilizado para calcular a distância das caixas delimitadoras destacadas pelo utilizador.
Observa: Cálculo da distância utilizando Ultralytics YOLOv8
Visuais
Cálculo da distância utilizando Ultralytics YOLOv8 |
---|
Vantagens do cálculo da distância?
- Precisão de localização: Melhora o posicionamento espacial preciso em tarefas de visão computacional.
- Estimativa de tamanho: Permite estimar tamanhos fĂsicos para uma melhor compreensĂŁo contextual.
- Compreensão da cena: Contribui para uma compreensão 3D do ambiente para melhorar a tomada de decisões.
Cálculo da distância
- Clica em quaisquer duas caixas delimitadoras com o botão esquerdo do rato para calcular a distância
Cálculo da distância utilizando YOLOv8 Exemplo
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolov8n.pt")
names = model.model.names
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
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
video_writer = cv2.VideoWriter("distance_calculation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init distance-calculation obj
dist_obj = solutions.DistanceCalculation(names=names, view_img=True)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
tracks = model.track(im0, persist=True, show=False)
im0 = dist_obj.start_process(im0, tracks)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
Nota
- Clica com o botĂŁo direito do rato para apagar todos os pontos desenhados
- O clique esquerdo do rato pode ser utilizado para desenhar pontos
Argumentos DistanceCalculation()
Name |
Type |
Default |
Descrição |
---|---|---|---|
names |
dict |
None |
Dicionário de nomes de classes. |
pixels_per_meter |
int |
10 |
Fator de conversão de pixéis para metros. |
view_img |
bool |
False |
Marca para indicar se o fluxo de vĂdeo deve ser apresentado. |
line_thickness |
int |
2 |
Espessura das linhas desenhadas na imagem. |
line_color |
tuple |
(255, 255, 0) |
Cor das linhas desenhadas na imagem (formato BGR). |
centroid_color |
tuple |
(255, 0, 255) |
Cor dos centroides desenhados (formato BGR). |
Argumentos model.track
Nome | Tipo | Predefinição | Descrição |
---|---|---|---|
source |
im0 |
None |
diretĂłrio de origem para imagens ou vĂdeos |
persist |
bool |
False |
persistĂŞncia de faixas entre fotogramas |
tracker |
str |
botsort.yaml |
MĂ©todo de rastreio 'bytetrack' ou 'botsort' |
conf |
float |
0.3 |
Limiar de confiança |
iou |
float |
0.5 |
Limiar IOU |
classes |
list |
None |
filtra os resultados por classe, ou seja, classes=0, ou classes=[0,2,3] |
verbose |
bool |
True |
Apresenta os resultados do rastreio de objectos |
FAQ
Como posso calcular distâncias entre objectos utilizando Ultralytics YOLOv8 ?
Para calcular distâncias entre objectos utilizando Ultralytics YOLOv8Para isso, tens de identificar os centróides da caixa delimitadora dos objectos detectados. Este processo envolve a inicialização do DistanceCalculation
classe de Ultralytics' solutions
e utiliza as saĂdas de rastreio do modelo para calcular as distâncias. Podes consultar a implementação no exemplo de cálculo de distância.
Quais são as vantagens de utilizar o cálculo de distâncias com Ultralytics YOLOv8 ?
A utilização do cálculo da distância com Ultralytics YOLOv8 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 da cena 3D, ajudando a melhorar a tomada de decisões em aplicações como a condução autónoma e a vigilância.
Posso efetuar o cálculo da distância em fluxos de vĂdeo em tempo real com Ultralytics YOLOv8 ?
Sim, podes efetuar o cálculo da distância em fluxos de vĂdeo em tempo real com Ultralytics YOLOv8 . O processo envolve a captura de quadros de vĂdeo usando o OpenCV, executando a deteção de objetos YOLOv8 e usando o DistanceCalculation
para calcular as distâncias entre objectos em fotogramas sucessivos. Para uma implementação detalhada, vĂŞ a exemplo de fluxo de vĂdeo.
Como é que elimino os pontos desenhados durante o cálculo da distância utilizando Ultralytics YOLOv8 ?
Para apagar os pontos desenhados durante o cálculo da distância com Ultralytics YOLOv8 , podes clicar com o botão direito do rato. Esta ação irá apagar todos os pontos que desenhaste. Para mais detalhes, consulta 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 YOLOv8 ?
Os argumentos chave para inicializar o DistanceCalculation
classe em Ultralytics YOLOv8 inclui:
names
: Dicionário que mapeia Ăndices de classes para nomes de classes.pixels_per_meter
: Fator de conversão de pixéis para metros.view_img
: Sinalizador para indicar se o fluxo de vĂdeo deve ser apresentado.line_thickness
: Espessura das linhas desenhadas na imagem.line_color
: Cor das linhas desenhadas na imagem (formato BGR).centroid_color
: Cor dos centrĂłides (formato BGR).
Para uma lista exaustiva e valores por defeito, vĂŞ os argumentos de DistanceCalculation.
Criado em 2024-01-05, Atualizado em 2024-07-14
Autores: RizwanMunawar (5), glenn-jocher (7), IvorZhu331 (1), AyushExel (1)