news 2026/6/9 22:31:16

使用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/6/10 12:32:04

区块链Web3 项目的开发

Web3 系统的开发已演变为一个注重意图驱动(Intent-centric)、AI 深度集成以及合规性(Compliance)的标准化流程。与传统 Web2 开发相比,它更强调经济激励(Tokenomics)与代码的不可篡改性。以下是…

作者头像 李华
网站建设 2026/5/30 7:29:21

35岁程序员的出路:AI赛道疯狂抢人,年薪百万不是梦

2025年7月1日,35岁程序员胡文收到猎头信息:某车企智能座舱系统架构师岗位,年薪80万股权,急招!这让他忆起3年前被优化时的恐慌。如今行业数据显示,掌握核心竞争力的35程序员迎来黄金期,AI赛道以3…

作者头像 李华
网站建设 2026/6/10 12:28:56

为什么你的Docker健康检查总失败?90%的人都忽略了这4个细节

第一章:为什么你的Docker健康检查总失败?Docker 的健康检查(HEALTHCHECK)是确保容器应用正常运行的重要机制,但许多开发者发现其频繁报告“unhealthy”,却难以定位根源。问题通常不在于应用本身&#xff0c…

作者头像 李华
网站建设 2026/6/10 12:28:21

边缘计算结点布局:让全球用户低延迟访问

边缘计算结点布局:让全球用户低延迟访问 在算法竞赛训练平台、编程面试辅导工具和实时数学解题助手这些高时效性场景中,用户对AI响应速度的容忍度正变得越来越低。一个800毫秒的延迟可能意味着一次练习节奏的中断,而超过1.5秒的等待则足以让用…

作者头像 李华
网站建设 2026/6/10 12:31:19

镜像管理混乱怎么办?一套私有仓库推送规范解决所有问题

第一章:镜像管理混乱的根源与挑战在现代容器化应用开发中,镜像作为交付的核心单元,其管理复杂性随着微服务数量的增长而急剧上升。缺乏统一规范和自动化机制的镜像管理体系,往往导致版本冲突、安全漏洞扩散以及部署失败等问题。命…

作者头像 李华