跳至内容

使用Ultralytics YOLOv8

什么是距离计算?

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



观看: 使用Ultralytics YOLOv8

视觉效果

使用Ultralytics YOLOv8
Ultralytics YOLOv8 距离计算

距离计算的优势?

  • 定位精度:提高计算机视觉任务中的空间定位精度。
  • Size Estimation: Allows estimation of object size for better contextual understanding.
距离计算
  • 用鼠标左键单击任意两个边界框,计算距离

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

论据 DistanceCalculation()

Name Type Default 说明
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 Specifies the source directory for images or videos. Supports file paths and URLs.
persist bool False Enables persistent tracking of objects between frames, maintaining IDs across video sequences.
tracker str botsort.yaml Specifies the tracking algorithm to use, e.g., bytetrack.yamlbotsort.yaml.
conf float 0.3 Sets the confidence threshold for detections; lower values allow more objects to be tracked but may include false positives.
iou float 0.5 Sets the Intersection over Union (IoU) threshold for filtering overlapping detections.
classes list None Filters results by class index. For example, classes=[0, 2, 3] only tracks the specified classes.
verbose bool True Controls the display of tracking results, providing a visual output of tracked objects.

常见问题

如何使用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:将类索引映射到类名称的字典。
  • view_img:指示是否显示视频流的标志。
  • line_thickness:在图像上绘制线条的厚度。
  • line_color:在图像上绘制线条的颜色(BGR 格式)。
  • centroid_color:中心点的颜色(BGR 格式)。

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


📅 Created 8 months ago ✏️ Updated 8 days ago

评论