news 2026/1/14 4:18:59

使用Ultralytics YOLO11进行距离计算

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用Ultralytics YOLO11进行距离计算

什么是距离计算?

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



观看:如何使用Ultralytics YOLO在像素中估算检测到的物体之间的距离 🚀

视觉效果

使用Ultralytics YOLO11进行距离计算

距离计算的优势

  • 定位精度:提高计算机视觉任务中的准确空间定位。
  • 尺寸估算:允许估算物体尺寸,以更好地理解上下文。
  • 场景理解:改善3D场景理解,以便在自动驾驶车辆和监控系统等应用中做出更好的决策。
  • 避碰:使系统能够通过监测移动物体之间的距离来检测潜在的碰撞。
  • 空间分析:促进对监控环境中对象关系和相互作用的分析。

距离计算

  • 用鼠标左键点击任意两个边界框以计算距离。
  • 使用右键鼠标删除所有绘制的点。
  • 在框架的任何位置单击以添加新点。

距离是估算的

距离是一个估算,可能并不完全准确,因为它是基于二维数据计算的,这缺乏深度信息。

使用Ultralytics YOLO进行距离计算

import 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论据的表格:

争论类型默认描述
modelstrNone通往超预测 YOLO 模型文件的路径。

你也可以利用各种trackDistanceCalculation解决方案中。

争论类型默认描述
trackerstr'botsort.yaml'指定使用的跟踪算法,例如,bytetrack.yamlbotsort.yaml
conffloat0.3设置检测的置信阈值;较小的值允许跟踪更多的物体,但也可能包括假阳性。
ioufloat0.5设置交并比 (IoU) 用于过滤重叠检测的阈值。
classeslistNone通过类索引过滤结果。例如,classes=[0, 2, 3]只跟踪指定的类。
verboseboolTrue控制跟踪结果的显示,提供跟踪对象的视觉输出。
devicestrNone指定推理设备(例如,cpucuda:00)。允许用户在CPU、特定GPU或其他计算设备之间选择用于模型执行的设备。

此外,以下可视化参数是可用的:

争论类型默认描述
showboolFalse如果True,在窗口中显示标注的图像或视频。在开发或测试期间提供即时视觉反馈。
line_widthint or NoneNone指定边界框的线宽。如果None,线宽将根据图像大小自动调整。提供视觉定制以提高清晰度。
show_confboolTrue显示每个检测的置信分数以及标签。了解模型对每个检测的确定性。
show_labelsboolTrue在视觉输出中显示每个检测的标签。提供对检测到的物体的即时理解。

实施细节

DistanceCalculation类通过在视频帧中跟踪物体并计算所选边界框的质心之间的欧几里得距离来工作。当你点击两个物体时,解决方案:

  1. 提取所选边界框的质心(中心点)
  2. 计算这些质心之间的欧几里得距离(以像素为单位)
  3. 显示框架上物体之间的距离,并用连接线表示。

该实现使用mouse_event_for_distance方法来处理鼠标交互,允许用户选择对象并根据需要清除选择。process方法处理逐帧处理、跟踪对象和计算距离。

应用程序

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

  • 零售分析:测量客户与产品的接近度并分析商店布局的有效性
  • 工业安全:监控工人与机械之间的安全距离
  • 交通管理:分析车辆间距并检测跟车行为
  • 运动分析:计算球员、球和关键场地位置之间的距离
  • 医疗保健:确保候诊区的适当距离并监控患者移动
  • 机器人技术:使机器人能够与障碍物和人保持适当的距离

常见问题

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

使用 Ultralytics YOLO11 计算物体之间的距离时,你需要识别检测到的物体的边界框中心。这个过程涉及初始化DistanceCalculationUltralytics 的solutions模块中的类,并使用模型的跟踪输出来计算距离。

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

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

  • 定位精度:为物体提供精确的空间定位。
  • 尺寸估算:帮助估算物理尺寸,有助于更好地理解上下文。
  • 场景理解:增强对3D场景的理解,有助于在自动驾驶和监控等应用中改进决策。
  • 实时处理:可实时进行计算,适用于实时视频分析。
  • 集成能力:与其他YOLO11解决方案无缝集成,例如物体跟踪和速度估计。

我能使用Ultralytics YOLO11在实时视频流中进行距离计算吗?

是的,你可以使用Ultralytics YOLO11在实时视频流中进行距离计算。这个过程包括使用OpenCV捕获视频帧,运行YOLO11物体检测,并使用DistanceCalculation类来计算连续帧中物体之间的距离。有关详细的实现,请参阅视频流示例。

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

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

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

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

  • model: YOLO11 模型文件的路径。
  • tracker: 跟踪算法的使用(默认是‘botsort.yaml’)。
  • conf检测的置信阈值。
  • show: 显示输出的标志。

欲了解完整的列表和默认值,请参阅DistanceCalculation的参数。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/12 15:27:08

研究生科研助手:借助VibeThinker完成数学建模推导

研究生科研助手:借助VibeThinker完成数学建模推导 在研究生阶段,尤其是参与数学建模竞赛、撰写理论论文或准备算法面试时,一个常见的痛点是:如何快速、准确地完成复杂的逻辑推导? 传统的做法依赖大量人工计算和反复验证…

作者头像 李华
网站建设 2026/1/11 0:33:10

揭秘Docker健康检查成功背后的秘密:你不可不知的3大配置技巧

第一章:Docker健康检查的核心价值与应用场景在容器化部署日益普及的今天,确保服务持续可用成为运维的关键目标。Docker 健康检查(HEALTHCHECK)机制为此提供了原生支持,它能够自动判断容器内应用的运行状态,…

作者头像 李华
网站建设 2026/1/11 5:40:11

UltraISO注册码最新版不香了?这个15亿参数模型更值得拥有

VibeThinker-1.5B:一个15亿参数的小模型,为何在数学与编程推理中反超大模型? 在AI圈,“越大越好”似乎早已成为共识。动辄百亿、千亿参数的模型轮番登场,训练成本动辄百万美元起步,部署更是依赖多张高端GPU…

作者头像 李华
网站建设 2026/1/11 7:54:02

基于java+ vue饮食营养管理系统(源码+数据库+文档)

饮食营养管理系统 目录 基于springboot vue饮食营养管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue饮食营养管理系统 一、前言 博主介绍&…

作者头像 李华
网站建设 2026/1/9 16:21:12

【生产环境避坑指南】:Docker网络配置中不可忽视的7大雷区

第一章:Docker微服务网络配置的核心挑战在构建基于Docker的微服务架构时,网络配置是决定服务间通信效率与安全性的关键因素。容器动态启停、IP地址动态分配以及服务发现机制的复杂性,共同构成了网络管理的主要难点。服务间通信隔离与互通的平…

作者头像 李华