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 |
---|
Ư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 |