使用Ultralytics YOLO11进行距离计算
什么是距离计算?
在指定空间内测量两个物体之间的间隔被称为距离计算。在Ultralytics YOLO11的情况下,使用边界框的质心来计算用户高亮显示的边界框的距离。
观看: 使用Ultralytics YOLO11进行距离计算
视觉效果
使用Ultralytics YOLO11进行距离计算 |
---|
距离计算的优势?
距离计算
- 点击任意两个边界框,使用左键点击进行距离计算
使用YOLO11进行距离计算示例
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolo11n.pt")
names = model.model.names
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "错误读取视频文件"
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_calculation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# 初始化距离计算对象
dist_obj = solutions.DistanceCalculation(names=names, view_img=True)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("视频帧为空或视频处理已成功完成。")
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()
Note
- 鼠标右键将删除所有绘制的点
- 鼠标左键可用于绘制点
距离为估计值
距离将是一个估计值,可能不完全准确,因为它使用的是二维数据,缺乏物体深度的信息。
DistanceCalculation()
参数
名称 |
类型 |
默认值 |
描述 |
---|---|---|---|
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 |
指定图像或视频的源目录。支持文件路径和URL。 |
persist |
bool |
False |
启用帧间对象的持续跟踪,在视频序列中保持ID一致。 |
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 |
控制跟踪结果的显示,提供被跟踪对象的视觉输出。 |
常见问题
如何使用Ultralytics YOLO11计算物体之间的距离?
要使用Ultralytics YOLO11计算物体之间的距离,您需要识别检测到的物体的边界框质心。此过程涉及从Ultralytics的solutions
模块初始化DistanceCalculation
类,并使用模型的跟踪输出来计算距离。您可以参考距离计算示例中的实现。
使用Ultralytics YOLO11进行距离计算的优势是什么?
使用Ultralytics YOLO11进行距离计算具有以下几个优势:
- 定位精度: 提供物体精确的空间定位。
- 尺寸估计: 有助于估计物理尺寸,有助于更好地理解上下文。
- 场景理解: 增强3D场景理解,有助于在自动驾驶和监控等应用中做出更好的决策。
我可以在Ultralytics YOLO11中对实时视频流进行距离计算吗?
是的,您可以在Ultralytics YOLO11中对实时视频流进行距离计算。该过程涉及使用OpenCV捕获视频帧,运行YOLO11目标检测,并使用DistanceCalculation
类计算连续帧中物体之间的距离。有关详细的实现,请参见视频流示例。
如何删除使用Ultralytics YOLO11进行距离计算时绘制的点?
要删除使用Ultralytics YOLO11进行距离计算时绘制的点,您可以使用鼠标右键点击。此操作将清除您绘制的所有点。有关更多详细信息,请参阅距离计算示例下的注释部分。
初始化Ultralytics YOLO11中的DistanceCalculation类有哪些关键参数?
初始化Ultralytics YOLO11中的DistanceCalculation
类的关键参数包括:
names
:将类别索引映射到类别名称的字典。view_img
:指示是否应显示视频流的标志。line_thickness
:在图像上绘制的线条的粗细。line_color
:在图像上绘制的线条的颜色(BGR格式)。centroid_color
:质心的颜色(BGR格式)。
有关详尽的列表和默认值,请参见DistanceCalculation的参数。
📅 Created 9 months ago
✏️ Updated 13 days ago