使用Ultralytics YOLO11
什么是距离计算?
测量两个物体之间的间距被称为特定空间内的距离计算。在 Ultralytics YOLO11中,边界框中心点被用来计算用户突出显示的边界框的距离。
观看: 使用Ultralytics YOLO11
视觉效果
使用Ultralytics YOLO11 |
---|
![]() |
距离计算的优势?
- 定位精度:提高计算机视觉任务中的空间定位精度。
- 尺寸估算:可估算物体大小,以便更好地理解上下文。
- 场景理解:提高 3D 场景理解能力,以便在自动驾驶汽车和监控系统等应用中做出更好的决策。
- 避免碰撞:通过监控移动物体之间的距离,使系统能够检测到潜在的碰撞。
- 空间分析:便于分析监控环境中的对象关系和互动。
距离计算
- 用鼠标左键单击任意两个边界框,计算距离
- 鼠标右键点击将删除所有绘制点
- 鼠标左键可用于绘制点
距离是估计值
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.
使用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
争论:
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
model |
str |
None |
Ultralytics YOLO 模型文件的路径。 |
您还可以利用各种 track
中的参数 DistanceCalculation
解决方案
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
指定要使用的跟踪算法,例如 bytetrack.yaml 或 botsort.yaml . |
conf |
float |
0.3 |
设置检测的置信度阈值;数值越低,跟踪的物体越多,但可能会出现误报。 |
iou |
float |
0.5 |
设置交叉重叠 (IoU) 阈值,用于过滤重叠检测。 |
classes |
list |
None |
按类别索引筛选结果。例如 classes=[0, 2, 3] 只跟踪指定的类别。 |
verbose |
bool |
True |
控制跟踪结果的显示,提供被跟踪物体的可视化输出。 |
device |
str |
None |
指定用于推理的设备(例如:......)、 cpu , cuda:0 或 0 ).允许用户选择CPU 、特定GPU 或其他计算设备执行模型。 |
此外,还提供以下可视化参数:
论据 | 类型 | 默认值 | 说明 |
---|---|---|---|
show |
bool |
False |
如果 True 在一个窗口中显示注释的图像或视频。有助于在开发或测试过程中提供即时视觉反馈。 |
line_width |
None or int |
None |
指定边界框的线宽。如果 None 根据图像大小自动调整线宽。提供可视化定制,使图像更加清晰。 |
实施细节
"(《世界人权宣言》) 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跑步YOLO11 物体检测并使用 DistanceCalculation
类来计算连续帧中对象之间的距离。有关详细实现,请参阅 视频流示例.
如何删除使用Ultralytics YOLO11 计算距离时绘制的点?
要删除在使用Ultralytics YOLO11 计算距离时绘制的点,可以单击鼠标右键。此操作将清除您绘制的所有点。更多详情,请参阅距离计算示例下的注释部分。
在Ultralytics YOLO11 中初始化 DistanceCalculation 类的关键参数是什么?
初始化 DistanceCalculation
Ultralytics YOLO11 中的类包括
model
:YOLO11 模型文件的路径。tracker
:要使用的跟踪算法(默认为 "botsort.yaml")。conf
:检测可信度阈值。show
:显示输出的标志。
有关详细列表和默认值,请参阅距离计算的参数。