Bỏ để qua phần nội dung

Tính toán khoảng cách bằng cách sử dụng Ultralytics YOLOv8

Tính toán khoảng cách là gì?

Đo khoảng cách giữa hai đối tượng được gọi là tính toán khoảng cách trong một không gian xác định. Trong trường hợp Ultralytics YOLOv8, trung tâm hộp giới hạn được sử dụng để tính khoảng cách cho các hộp giới hạn được người dùng tô sáng.



Xem: Tính toán khoảng cách bằng cách sử dụng Ultralytics YOLOv8

Hình ảnh

Tính toán khoảng cách bằng cách sử dụng Ultralytics YOLOv8
Ultralytics YOLOv8 Tính toán khoảng cách

Ưu điểm của tính toán khoảng cách?

  • Độ chính xác bản địa hóa: Tăng cường định vị không gian chính xác trong các tác vụ thị giác máy tính.
  • Size Estimation: Allows estimation of object size for better contextual understanding.
Tính toán khoảng cách
  • Nhấp vào bất kỳ hai hộp giới hạn nào bằng cách nhấp chuột trái để tính toán khoảng cách

Tính toán khoảng cách bằng cách sử dụng YOLOv8 Ví dụ

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()
Ghi
  • Nhấp chuột phải sẽ xóa tất cả các điểm được vẽ
  • Nhấp chuột trái có thể được sử dụng để rút điểm
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.

Lập luận DistanceCalculation()

Name Type Default Sự miêu tả
names dict None Từ điển tên lớp.
view_img bool False Gắn cờ để cho biết luồng video có hiển thị hay không.
line_thickness int 2 Độ dày của các đường vẽ trên hình ảnh.
line_color tuple (255, 255, 0) Màu sắc của các đường vẽ trên hình ảnh (định dạng BGR).
centroid_color tuple (255, 0, 255) Màu sắc của centroid được vẽ (định dạng BGR).

Lập luận model.track

Lý lẽ Kiểu Mặc định Sự miêu tả
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 hoặc 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.

FAQ

Làm cách nào để tính khoảng cách giữa các đối tượng bằng cách sử dụng Ultralytics YOLOv8?

Để tính toán khoảng cách giữa các đối tượng bằng cách sử dụng Ultralytics YOLOv8, bạn cần xác định các trung tâm hộp giới hạn của các đối tượng được phát hiện. Quá trình này liên quan đến việc khởi tạo DistanceCalculation lớp học từ Ultralytics' solutions mô-đun và sử dụng đầu ra theo dõi của mô hình để tính toán khoảng cách. Bạn có thể tham khảo cách triển khai tại Ví dụ tính toán khoảng cách.

Ưu điểm của việc sử dụng tính toán khoảng cách với Ultralytics YOLOv8?

Sử dụng tính toán khoảng cách với Ultralytics YOLOv8 Cung cấp một số lợi thế:

  • Độ chính xác bản địa hóa: Cung cấp định vị không gian chính xác cho các đối tượng.
  • Ước tính kích thước: Giúp ước tính kích thước vật lý, góp phần hiểu ngữ cảnh tốt hơn.
  • Hiểu cảnh: Tăng cường khả năng hiểu cảnh 3D, hỗ trợ cải thiện việc ra quyết định trong các ứng dụng như lái xe và giám sát tự động.

Tôi có thể thực hiện tính toán khoảng cách trong luồng video thời gian thực với Ultralytics YOLOv8?

Có, bạn có thể thực hiện tính toán khoảng cách trong luồng video thời gian thực với Ultralytics YOLOv8. Quá trình này liên quan đến việc chụp khung hình video bằng OpenCV, chạy YOLOv8 phát hiện đối tượng và sử dụng DistanceCalculation lớp để tính khoảng cách giữa các đối tượng trong các khung liên tiếp. Để biết cách triển khai chi tiết, hãy xem Ví dụ về luồng video.

Làm cách nào để xóa các điểm được vẽ trong quá trình tính toán khoảng cách bằng cách sử dụng Ultralytics YOLOv8?

Để xóa các điểm được vẽ trong quá trình tính toán khoảng cách với Ultralytics YOLOv8, bạn có thể sử dụng một cú nhấp chuột phải. Hành động này sẽ xóa tất cả các điểm bạn đã rút ra. Để biết thêm chi tiết, hãy tham khảo phần ghi chú bên dưới ví dụ tính toán khoảng cách.

Các đối số chính để khởi tạo lớp DistanceCalculation trong là gì Ultralytics YOLOv8?

Các đối số chính để khởi tạo DistanceCalculation lớp học trong Ultralytics YOLOv8 bao gồm:

  • names: Từ điển ánh xạ các chỉ mục lớp đến tên lớp.
  • view_img: Gắn cờ để cho biết luồng video có được hiển thị hay không.
  • line_thickness: Độ dày của các đường vẽ trên hình ảnh.
  • line_color: Màu sắc của các đường vẽ trên hình ảnh (định dạng BGR).
  • centroid_color: Màu sắc của centroid (định dạng BGR).

Để biết danh sách đầy đủ và các giá trị mặc định, hãy xem các đối số của DistanceCalculation.


📅 Created 8 months ago ✏️ Updated 8 days ago

Ý kiến