Afstand berekenen met Ultralytics YOLOv8 🚀
Wat is afstand berekenen?
Het meten van de afstand tussen twee objecten staat bekend als afstandsberekening binnen een bepaalde ruimte. In het geval van Ultralytics YOLOv8wordt het middelpunt van de bounding box gebruikt om de afstand te berekenen voor bounding boxes die door de gebruiker zijn gemarkeerd.
Kijken: Afstand berekenen met Ultralytics YOLOv8
Beeldmateriaal
Afstand berekenen met Ultralytics YOLOv8 |
---|
Voordelen van afstandsberekening?
- Lokalisatieprecisie: Verbetert nauwkeurige ruimtelijke positionering in computervisietaken.
- Schatting van de grootte: Maakt schatting van fysieke afmetingen mogelijk voor een beter begrip van de context.
- Inzicht in scène: Draagt bij aan een 3D begrip van de omgeving voor verbeterde besluitvorming.
Afstand berekenen
- Klik met de linkermuisknop op twee begrenzende vakken om de afstand te berekenen
Afstand berekenen met YOLOv8 Voorbeeld
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()
Opmerking
- Rechts klikken met de muis verwijdert alle getekende punten
- Klikken met de linkermuisknop kan worden gebruikt om punten te tekenen
Optionele argumenten set_args
Naam | Type | Standaard | Beschrijving |
---|---|---|---|
names |
dict |
None |
Namen van klassen |
view_img |
bool |
False |
Frames met tellingen weergeven |
line_thickness |
int |
2 |
Vergroot de dikte van bounding boxes |
line_color |
RGB |
(255, 255, 0) |
Lijnkleur voor centroïden die op twee begrenzende vakken passen |
centroid_color |
RGB |
(255, 0, 255) |
Kleur van het middelpunt voor elk begrenzend vak |
Argumenten model.track
Naam | Type | Standaard | Beschrijving |
---|---|---|---|
source |
im0 |
None |
bronmap voor afbeeldingen of video's |
persist |
bool |
False |
Blijvende sporen tussen frames |
tracker |
str |
botsort.yaml |
Volgmethode 'bytetrack' of 'botsort' |
conf |
float |
0.3 |
Vertrouwensdrempel |
iou |
float |
0.5 |
Drempel IOU |
classes |
list |
None |
filter resultaten op klasse, d.w.z. classes=0, of classes=[0,2,3] |
verbose |
bool |
True |
De resultaten van het volgen van objecten weergeven |
Gemaakt op 2024-01-05, Bijgewerkt op 2024-03-01
Auteurs: RizwanMunawar (5), glenn-jocher (2), AyushExel (1)