使用Ultralytics YOLOv8
什么是距离计算?
测量两个物体之间的间距被称为特定空间内的距离计算。在 Ultralytics YOLOv8中,边界框中心点被用来计算用户突出显示的边界框的距离。
观看: 使用Ultralytics YOLOv8
视觉效果
使用Ultralytics YOLOv8 |
---|
距离计算的优势?
- 定位精度:提高计算机视觉任务中的空间定位精度。
- Size Estimation: Allows estimation of object size for better contextual understanding.
距离计算
- 用鼠标左键单击任意两个边界框,计算距离
使用YOLOv8 计算距离示例
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(), "Error reading video file"
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
video_writer = cv2.VideoWriter("distance_calculation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init distance-calculation obj
dist_obj = solutions.DistanceCalculation(names=names, view_img=True)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
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()
备注
- 鼠标右键点击将删除所有绘制点
- 鼠标左键可用于绘制点
Distance is Estimate
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.
论据 DistanceCalculation()
Name |
Type |
Default |
说明 |
---|---|---|---|
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 |
Specifies the source directory for images or videos. Supports file paths and URLs. |
persist |
bool |
False |
Enables persistent tracking of objects between frames, maintaining IDs across video sequences. |
tracker |
str |
botsort.yaml |
Specifies the tracking algorithm to use, e.g., bytetrack.yaml 或 botsort.yaml . |
conf |
float |
0.3 |
Sets the confidence threshold for detections; lower values allow more objects to be tracked but may include false positives. |
iou |
float |
0.5 |
Sets the Intersection over Union (IoU) threshold for filtering overlapping detections. |
classes |
list |
None |
Filters results by class index. For example, classes=[0, 2, 3] only tracks the specified classes. |
verbose |
bool |
True |
Controls the display of tracking results, providing a visual output of tracked objects. |
常见问题
如何使用Ultralytics YOLOv8 计算物体之间的距离?
使用 Ultralytics YOLOv8然后,您需要确定检测到的对象的边界框中心点。这个过程包括初始化 DistanceCalculation
类从Ultralytics' solutions
模块,并使用模型的跟踪输出来计算距离。您可以参考 距离计算示例.
使用Ultralytics YOLOv8 进行距离计算有哪些优势?
使用Ultralytics YOLOv8 进行距离计算有几个优势:
- 定位精度:为物体提供精确的空间定位。
- 尺寸估算:帮助估算物理尺寸,有助于更好地理解上下文。
- 场景理解:增强 3D 场景理解能力,有助于在自动驾驶和监控等应用中改进决策。
可以通过Ultralytics YOLOv8 在实时视频流中进行距离计算吗?
是的,您可以通过Ultralytics YOLOv8 在实时视频流中执行距离计算。该过程包括使用 OpenCV 捕捉视频帧,运行YOLOv8 对象检测,并使用 DistanceCalculation
类来计算连续帧中对象之间的距离。有关详细实现,请参阅 视频流示例.
如何删除使用Ultralytics YOLOv8 计算距离时绘制的点?
要删除在使用Ultralytics YOLOv8 计算距离时绘制的点,可以单击鼠标右键。此操作将清除您绘制的所有点。更多详情,请参阅距离计算示例下的注释部分。
在Ultralytics YOLOv8 中初始化 DistanceCalculation 类的关键参数是什么?
初始化 DistanceCalculation
Ultralytics YOLOv8 中的类包括
names
:将类索引映射到类名称的字典。view_img
:指示是否显示视频流的标志。line_thickness
:在图像上绘制线条的厚度。line_color
:在图像上绘制线条的颜色(BGR 格式)。centroid_color
:中心点的颜色(BGR 格式)。
有关详细列表和默认值,请参阅距离计算的参数。
📅 Created 8 months ago
✏️ Updated 8 days ago