跳至内容

使用Ultralytics YOLOv8

什么是距离计算?

测量两个物体之间的间距被称为特定空间内的距离计算。在 Ultralytics YOLOv8中,边界框中心点被用来计算用户突出显示的边界框的距离。



观看: 使用Ultralytics YOLOv8

视觉效果

使用Ultralytics YOLOv8
Ultralytics YOLOv8 距离计算

距离计算的优势?

  • 定位精度:提高计算机视觉任务中的空间定位精度。
  • 尺寸估算:允许估算物理尺寸,以便更好地理解上下文。
  • 场景理解:有助于对环境的三维理解,从而改进决策。
距离计算
  • 用鼠标左键单击任意两个边界框,计算距离

使用YOLOv8 计算距离示例

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()
备注
  • 鼠标右键点击将删除所有绘制点
  • 鼠标左键可用于绘制点

论据 DistanceCalculation()

Name Type Default 说明
names dict None 类名词典
pixels_per_meter int 10 从像素到米的转换系数。
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 im0 None 图像或视频的源目录
persist bool False 帧与帧之间的持久轨迹
tracker str botsort.yaml 跟踪方法 "bytetrack "或 "botsort
conf float 0.3 置信度阈值
iou float 0.5 借据阈值
classes list None 按类别筛选结果,即 classes=0,或 classes=[0,2,3]
verbose bool True 显示物体跟踪结果

常见问题

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

使用 Ultralytics YOLOv8然后,您需要确定检测到的对象的边界框中心点。这个过程包括初始化 DistanceCalculation 类从Ultralytics' solutions 模块,并使用模型的跟踪输出来计算距离。您可以参考 距离计算示例.

使用Ultralytics YOLOv8 进行距离计算有哪些优势?

使用Ultralytics YOLOv8 进行距离计算有几个优势:

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

可以通过Ultralytics YOLOv8 在实时视频流中进行距离计算吗?

是的,您可以通过Ultralytics YOLOv8 在实时视频流中执行距离计算。该过程包括使用 OpenCV 捕捉视频帧,运行YOLOv8 对象检测,并使用 DistanceCalculation 类来计算连续帧中对象之间的距离。有关详细实现,请参阅 视频流示例.

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

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

在Ultralytics YOLOv8 中初始化 DistanceCalculation 类的关键参数是什么?

初始化 DistanceCalculation Ultralytics YOLOv8 中的类包括

  • names:将类索引映射到类名称的字典。
  • pixels_per_meter:从像素到米的转换系数。
  • view_img:指示是否显示视频流的标志。
  • line_thickness:在图像上绘制线条的厚度。
  • line_color:在图像上绘制线条的颜色(BGR 格式)。
  • centroid_color:中心点的颜色(BGR 格式)。

有关详细列表和默认值,请参阅距离计算的参数



创建于 2024-01-05,更新于 2024-07-14
作者:RizwanMunawar(5)、glenn-jocher(7)、IvorZhu331(1)、AyushExel(1)

评论