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.
  • Ước tính kích thước: Cho phép ước tính kích thước vật lý để hiểu ngữ cảnh tốt hơn.
  • Hiểu cảnh: Góp phần vào sự hiểu biết 3D về môi trường để cải thiện việc ra quyết định.
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ụ

from ultralytics import YOLO
from ultralytics.solutions import distance_calculation
import cv2

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 = distance_calculation.DistanceCalculation()
dist_obj.set_args(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

Đối số tùy chọn set_args

Tên Kiểu Mặc định Sự miêu tả
names dict None Tên lớp
view_img bool False Hiển thị khung có số lượng
line_thickness int 2 Tăng độ dày hộp giới hạn
line_color RGB (255, 255, 0) Màu đường cho ánh xạ centroid trên hai hộp giới hạn
centroid_color RGB (255, 0, 255) Màu trung tâm cho mỗi hộp giới hạn

Lập luận model.track

Tên Kiểu Mặc định Sự miêu tả
source im0 None Thư mục nguồn cho hình ảnh hoặc video
persist bool False Các rãnh liên tục giữa các khung hình
tracker str botsort.yaml Phương pháp theo dõi 'bytetrack' hoặc 'botsort'
conf float 0.3 Ngưỡng tin cậy
iou float 0.5 Ngưỡng IOU
classes list None Lọc kết quả theo lớp, tức là lớp = 0 hoặc lớp = [0,2,3]
verbose bool True Hiển thị kết quả theo dõi đối tượng


Đã tạo 2024-01-05, Cập nhật 2024-03-01
Tác giả: RizwanMunawar (5), glenn-jocher (2), AyushExel (1)

Ý kiến