HOME> 转生系统> 使用Ultralytics YOLO11进行距离计算

使用Ultralytics YOLO11进行距离计算

转生系统 2026-01-10 05:59:12

使用 Ultralytics YOLO11 进行距离计算什么是距离计算?测量两个物体之间的间隙被称为指定空间内的距离计算。在 Ultralytics YOLO11 的情况下,边界框 质心用于计算用户突出显示的边界框的距离。

观看: 如何使用 Ultralytics YOLO 以像素为单位估计检测到的目标之间的距离 🚀

视觉效果使用 Ultralytics YOLO11 进行距离计算距离计算的优势定位精度: 增强计算机视觉任务中的准确空间定位。尺寸估计: 允许估计物体尺寸,以更好地理解上下文。场景理解: 改进 3D 场景理解,从而在自动驾驶汽车和监控系统等应用中做出更好的决策。碰撞避免:通过监测移动物体之间的距离,使系统能够 detect 潜在碰撞。空间分析: 促进对监控环境中目标关系和交互的分析。距离计算用鼠标左键点击任意两个边界框以计算距离。使用鼠标右键删除所有绘制的点。在帧内任意位置左键单击以添加新点。距离是一个估计值距离是一个估计值,可能不完全准确,因为它使用缺乏深度信息的2D数据进行计算。

使用Ultralytics YOLO进行距离计算

Pythonimport 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() 参数这是一个包含以下内容的表格 DistanceCalculation 参数:

参数类型默认值描述modelstrNoneUltralytics YOLO 模型文件的路径。您还可以使用各种 track 中的参数 DistanceCalculation 解决方案。

参数类型默认值描述trackerstr'botsort.yaml'指定要使用的跟踪算法,例如: bytetrack.yaml 或 botsort.yaml.conffloat0.3设置检测的置信度阈值;较低的值允许跟踪更多对象,但可能包含误报。ioufloat0.5设置交并比 (IoU) 阈值,用于过滤重叠的检测结果。classeslistNone按类别索引过滤结果。例如, classes=[0, 2, 3] 仅跟踪指定的类别。verboseboolTrue控制跟踪结果的显示,提供被跟踪对象的可视化输出。devicestrNone指定用于推理的设备(例如, cpu, cuda:0 或 0)。允许用户在 CPU、特定 GPU 或其他计算设备之间进行选择,以执行模型。此外,以下可视化参数可供使用:

参数类型默认值描述showboolFalse可视化参数: True,则在窗口中显示带注释的图像或视频。这对于开发或测试期间的即时视觉反馈非常有用。line_widthint or NoneNone指定边界框的线条宽度。 如果 None,则线条宽度会根据图像大小自动调整。 提供视觉自定义以提高清晰度。show_confboolTrue在标签旁边显示每个检测的置信度分数。 可以深入了解模型对每次检测的确定性。show_labelsboolTrue在可视化输出中显示每个检测的标签。 能够立即理解检测到的对象。实施细节字段 DistanceCalculation 类的工作原理是跟踪视频帧中的对象,并计算所选边界框的质心之间的欧几里德距离。当您单击两个对象时,解决方案:

提取所选边界框的质心(中心点)计算像素中这些质心之间的欧几里得距离在帧上显示距离,并在对象之间使用连接线该实现使用 mouse_event_for_distance 方法来处理鼠标交互,允许用户根据需要选择对象和清除选择。该 process 方法处理逐帧处理、跟踪对象和计算距离。

应用使用YOLO11进行距离计算具有许多实际应用:

零售分析: 测量顾客与产品的接近程度,并分析商店布局的有效性工业安全: 监控工人和机器之间的安全距离交通管理:分析车距并检测跟车过近行为体育分析: 计算球员、球和关键场上位置之间的距离医疗保健: 确保等候区域保持适当距离并监控患者动向机器人: 使机器人能够与障碍物和人员保持适当的距离常见问题如何使用 Ultralytics YOLO11 计算物体之间的距离?要使用以下方法计算对象之间的距离 Ultralytics YOLO11,您需要识别检测到的物体的边界框中心点。此过程涉及初始化 DistanceCalculation 类,来自 Ultralytics 的 solutions 模块,并使用模型的跟踪输出来计算距离。

将距离计算与 Ultralytics YOLO11 结合使用有哪些优势?将距离计算与 Ultralytics YOLO11 结合使用具有以下几个优点:

定位精度: 为对象提供准确的空间定位。尺寸估计: 帮助估计物理尺寸,从而有助于更好地理解上下文。场景理解: 增强 3D 场景理解,有助于改进自动驾驶和监控等应用中的决策。实时处理: 动态执行计算,使其适用于实时视频分析。集成能力: 与其他 YOLO11 解决方案(如对象跟踪和速度估计)无缝协作。是否可以使用 Ultralytics YOLO11 在实时视频流中执行距离计算?是的,您可以使用 Ultralytics YOLO11 在实时视频流中执行距离计算。该过程包括使用 OpenCV 捕获视频帧 OpenCV,运行 YOLO11 对象检测,并使用 DistanceCalculation 类,用于计算连续帧中对象之间的距离。有关详细的实现,请参见 视频流示例.

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

在 Ultralytics YOLO11 中,初始化 DistanceCalculation 类的主要参数是什么?用于初始化以下对象的关键参数 DistanceCalculation Ultralytics YOLO11 中的类包括:

model: YOLO11 模型文件的路径。tracker:要使用的 track 算法(默认为 'botsort.yaml')。conf: 检测的置信度阈值。show: 用于显示输出的标志。有关详尽的列表和默认值,请参阅DistanceCalculation 的参数。

📅 2 年前创建 ✏️ 27 天前更新 Tweet 分享 评论

700万转会费!中超或迎1名世界杯级外援,韩国副队长朴镇燮加盟浙江队
如何轻松关闭计步器,全方位指南,一键解锁,轻松关闭计步器的全方位操作指南