Skip to content

使用Ultralytics YOLO11进行距离计算

什么是距离计算?

在指定空间内测量两个物体之间的间隔被称为距离计算。在Ultralytics YOLO11的情况下,使用边界框的质心来计算用户高亮显示的边界框的距离。



观看: 使用Ultralytics YOLO11进行距离计算

视觉效果

使用Ultralytics YOLO11进行距离计算
Ultralytics YOLO11距离计算

距离计算的优势?

  • 定位精度 提高计算机视觉任务中的精确空间定位。
  • 尺寸估计: 允许对物体尺寸进行估计,以更好地理解上下文。
距离计算
  • 点击任意两个边界框,使用左键点击进行距离计算

使用YOLO11进行距离计算示例

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolo11n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "错误读取视频文件"
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_calculation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# 初始化距离计算对象
dist_obj = solutions.DistanceCalculation(names=names, view_img=True)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("视频帧为空或视频处理已成功完成。")
        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()
Note
  • 鼠标右键将删除所有绘制的点
  • 鼠标左键可用于绘制点
距离为估计值
距离将是一个估计值,可能不完全准确,因为它使用的是二维数据,缺乏物体深度的信息。

DistanceCalculation()参数

名称 类型 默认值 描述
names dict None 类名字典。
view_img bool False 指示是否应显示视频流的标志。
line_thickness int 2 图像上绘制的线条的厚度。
line_color tuple (255, 255, 0) 图像上绘制的线条的颜色(BGR格式)。
centroid_color tuple (255, 0, 255) 绘制的质心的颜色(BGR格式)。

model.track参数

参数 类型 默认值 描述
source str None 指定图像或视频的源目录。支持文件路径和URL。
persist bool False 启用帧间对象的持续跟踪,在视频序列中保持ID一致。
tracker str botsort.yaml 指定要使用的跟踪算法,例如 bytetrack.yamlbotsort.yaml
conf float 0.3 设置检测的置信度阈值;较低的值允许更多对象被跟踪,但可能包含误报。
iou float 0.5 设置用于过滤重叠检测的交并比 (IoU) 阈值。
classes list None 按类别索引过滤结果。例如,classes=[0, 2, 3] 仅跟踪指定的类别。
verbose bool True 控制跟踪结果的显示,提供被跟踪对象的视觉输出。

常见问题

如何使用Ultralytics YOLO11计算物体之间的距离?

要使用Ultralytics YOLO11计算物体之间的距离,您需要识别检测到的物体的边界框质心。此过程涉及从Ultralytics的solutions模块初始化DistanceCalculation类,并使用模型的跟踪输出来计算距离。您可以参考距离计算示例中的实现。

使用Ultralytics YOLO11进行距离计算的优势是什么?

使用Ultralytics YOLO11进行距离计算具有以下几个优势:

  • 定位精度: 提供物体精确的空间定位。
  • 尺寸估计: 有助于估计物理尺寸,有助于更好地理解上下文。
  • 场景理解: 增强3D场景理解,有助于在自动驾驶和监控等应用中做出更好的决策。

我可以在Ultralytics YOLO11中对实时视频流进行距离计算吗?

是的,您可以在Ultralytics YOLO11中对实时视频流进行距离计算。该过程涉及使用OpenCV捕获视频帧,运行YOLO11目标检测,并使用DistanceCalculation类计算连续帧中物体之间的距离。有关详细的实现,请参见视频流示例

如何删除使用Ultralytics YOLO11进行距离计算时绘制的点?

要删除使用Ultralytics YOLO11进行距离计算时绘制的点,您可以使用鼠标右键点击。此操作将清除您绘制的所有点。有关更多详细信息,请参阅距离计算示例下的注释部分。

初始化Ultralytics YOLO11中的DistanceCalculation类有哪些关键参数?

初始化Ultralytics YOLO11中的DistanceCalculation类的关键参数包括:

  • names:将类别索引映射到类别名称的字典。
  • view_img:指示是否应显示视频流的标志。
  • line_thickness:在图像上绘制的线条的粗细。
  • line_color:在图像上绘制的线条的颜色(BGR格式)。
  • centroid_color:质心的颜色(BGR格式)。

有关详尽的列表和默认值,请参见DistanceCalculation的参数


📅 Created 9 months ago ✏️ Updated 13 days ago

Comments