交互式实时距离测量-单目测距-社交距离检测

使用说明

  • 使用鼠标点击两个目标框
  • 要删除在距离计算过程中绘制的点,你可以使用鼠标右键点击。这会清除所有已绘制的点

使用 Ultralytics YOLOv8 进行距离计算

在这里插入图片描述

距离计算是在指定空间内测量两个物体之间间隙的基本概念。在 Ultralytics YOLOv8 的情况下,通过使用被检测物体的边界框中心点来计算距离。这种技术使我们能够精确确定图像或视频帧中物体的相对位置,这对于计算机视觉和机器人学来说至关重要。

视觉展示:使用 Ultralytics YOLOv8 进行距离计算

为了更好地理解这一过程,我们可以想象一个视频场景,其中包含多个移动的物体。YOLOv8 模型首先对这些物体进行识别并绘制边界框。接下来,我们可以通过点击这些边界框的中心点来测量它们之间的距离。这将帮助我们了解不同物体之间的空间关系。

距离计算的优势?
  • 定位精度:提高计算机视觉任务中的空间定位准确性。
  • 尺寸估计:允许估算物理尺寸,从而增强对场景上下文的理解。
  • 场景理解:有助于三维环境的理解,从而改善决策制定,比如在自动驾驶和监控应用中。
    在这里插入图片描述
距离计算步骤

要使用 YOLOv8 计算距离,请按照以下步骤操作:

  1. 初始化模型:加载预训练的 YOLOv8 模型。
  2. 读取视频流:从文件或摄像头获取视频流。
  3. 跟踪物体:利用 YOLOv8 对视频帧中的物体进行跟踪。
  4. 计算距离:通过点击物体的边界框中心点来计算距离。
示例代码
import cv2
from ultralytics import YOLO, solutions

# 加载模型
model = YOLO("yolov8n.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))

# 初始化距离计算对象

# 循环读取视频帧
while cap.isOpened():
    success, im0 = cap.read()
    
    if not success:
        print("视频帧为空或视频处理已完成。")
        break
    

    
    # 写入视频帧
    video_writer.write(im0)

# 关闭资源
cap.release()
video_writer.release()
cv2.destroyAllWindows()
注意事项
  • 右键点击可以删除所有已绘制的点。
  • 左键点击用于绘制点。
DistanceCalculations 类构造函数参数
名称类型默认值描述
names字典None类别名称字典。
pixels_per_meter整数10像素到米的转换因子。
view_img布尔值False是否显示视频流。
line_thickness整数2绘制线条的厚度。
line_color元组(255, 255, 0)绘制线条的颜色(BGR 格式)。
centroid_color元组(255, 0, 255)绘制中心点的颜色(BGR 格式)。
model.track 方法参数
名称类型默认值描述
im0图像None输入图像或视频帧。
persist布尔值False在连续帧间保持跟踪。
tracker字符串botsort.yaml跟踪方法,如 ‘bytetrack’ 或 ‘botsort’。
conf浮点数0.3置信度阈值。
iou浮点数0.5IOU 阈值。
classes列表None过滤结果中的类别,例如 classes=0classes=[0,2,3]
verbose布尔值True是否显示物体跟踪结果。
常见问题解答

如何使用 Ultralytics YOLOv8 计算物体间的距离?

要使用 Ultralytics YOLOv8 计算物体间的距离,你需要先识别出物体的边界框中心点。这个过程包括初始化 DistanceCalculation 类,并利用模型的跟踪输出来计算距离。具体实现可参考上面给出的距离计算示例代码。

使用 Ultralytics YOLOv8 进行距离计算的优点有哪些?

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

  • 定位精度:提高了物体的空间定位准确度。
  • 尺寸估计:有助于估计实际尺寸,从而增强场景上下文的理解。
  • 场景理解:增强了三维场景的理解,有助于在诸如自动驾驶和监控等应用中做出更好的决策。

是否可以在实时视频流中使用 Ultralytics YOLOv8 进行距离计算?

是的,你可以在实时视频流中使用 Ultralytics YOLOv8 进行距离计算。该过程涉及使用 OpenCV 抓取视频帧,运行 YOLOv8 物体检测,并使用 DistanceCalculation 类在连续的视频帧中计算物体间的距离。详细的实现方式请参考上述视频流示例代码。

如何删除在距离计算过程中绘制的点?

要删除在距离计算过程中绘制的点,你可以使用鼠标右键点击。这会清除所有已绘制的点。更多详情请参考示例代码中的注意事项部分。

最后

计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,远程协助,代码定制,私聊会回复!

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿利同学

一角两角不嫌少

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值