Vai al contenuto

VisionEye Visualizza la mappatura degli oggetti utilizzando Ultralytics YOLO11 🚀

Che cos'è la mappatura degli oggetti di VisionEye?

Ultralytics YOLO11 VisionEye consente ai computer di identificare e individuare gli oggetti, simulando la precisione di osservazione dell'occhio umano. Questa funzionalitĂ  consente ai computer di individuare e mettere a fuoco oggetti specifici, proprio come l'occhio umano osserva i dettagli da un particolare punto di vista.

Campioni

Vista VisionEye Vista VisionEye con tracciamento degli oggetti Vista VisionEye con calcolo della distanza
VisionEye Visualizza la mappatura degli oggetti utilizzando Ultralytics YOLO11 VisionEye Visualizza la mappatura degli oggetti con il tracciamento degli oggetti utilizzando Ultralytics YOLO11 Vista VisionEye con calcolo della distanza tramite Ultralytics YOLO11
VisionEye Visualizza la mappatura degli oggetti utilizzando Ultralytics YOLO11 VisionEye Visualizza la mappatura degli oggetti con il tracciamento degli oggetti utilizzando Ultralytics YOLO11 Vista VisionEye con calcolo della distanza tramite Ultralytics YOLO11

Mappatura degli oggetti VisionEye con YOLO11

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolo11n.pt")
names = model.model.names
cap = cv2.VideoCapture("path/to/video/file.mp4")
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter("visioneye-pinpoint.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))

center_point = (-10, h)

while True:
    ret, im0 = cap.read()
    if not ret:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = model.predict(im0)
    boxes = results[0].boxes.xyxy.cpu()
    clss = results[0].boxes.cls.cpu().tolist()

    annotator = Annotator(im0, line_width=2)

    for box, cls in zip(boxes, clss):
        annotator.box_label(box, label=names[int(cls)], color=colors(int(cls)))
        annotator.visioneye(box, center_point)

    out.write(im0)
    cv2.imshow("visioneye-pinpoint", im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

out.release()
cap.release()
cv2.destroyAllWindows()
import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter("visioneye-pinpoint.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))

center_point = (-10, h)

while True:
    ret, im0 = cap.read()
    if not ret:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    annotator = Annotator(im0, line_width=2)

    results = model.track(im0, persist=True)
    boxes = results[0].boxes.xyxy.cpu()

    if results[0].boxes.id is not None:
        track_ids = results[0].boxes.id.int().cpu().tolist()

        for box, track_id in zip(boxes, track_ids):
            annotator.box_label(box, label=str(track_id), color=colors(int(track_id)))
            annotator.visioneye(box, center_point)

    out.write(im0)
    cv2.imshow("visioneye-pinpoint", im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

out.release()
cap.release()
cv2.destroyAllWindows()
import math

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("Path/to/video/file.mp4")

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter("visioneye-distance-calculation.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))

center_point = (0, h)
pixel_per_meter = 10

txt_color, txt_background, bbox_clr = ((0, 0, 0), (255, 255, 255), (255, 0, 255))

while True:
    ret, im0 = cap.read()
    if not ret:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    annotator = Annotator(im0, line_width=2)

    results = model.track(im0, persist=True)
    boxes = results[0].boxes.xyxy.cpu()

    if results[0].boxes.id is not None:
        track_ids = results[0].boxes.id.int().cpu().tolist()

        for box, track_id in zip(boxes, track_ids):
            annotator.box_label(box, label=str(track_id), color=bbox_clr)
            annotator.visioneye(box, center_point)

            x1, y1 = int((box[0] + box[2]) // 2), int((box[1] + box[3]) // 2)  # Bounding box centroid

            distance = (math.sqrt((x1 - center_point[0]) ** 2 + (y1 - center_point[1]) ** 2)) / pixel_per_meter

            text_size, _ = cv2.getTextSize(f"Distance: {distance:.2f} m", cv2.FONT_HERSHEY_SIMPLEX, 1.2, 3)
            cv2.rectangle(im0, (x1, y1 - text_size[1] - 10), (x1 + text_size[0] + 10, y1), txt_background, -1)
            cv2.putText(im0, f"Distance: {distance:.2f} m", (x1, y1 - 5), cv2.FONT_HERSHEY_SIMPLEX, 1.2, txt_color, 3)

    out.write(im0)
    cv2.imshow("visioneye-distance-calculation", im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

out.release()
cap.release()
cv2.destroyAllWindows()

visioneye Argomenti

Nome Tipo Predefinito Descrizione
color tuple (235, 219, 11) Colore del centroide della linea e dell'oggetto
pin_color tuple (255, 0, 255) VisionEye colore pinpoint

Nota

Per qualsiasi richiesta, non esitate a postare le vostre domande nella sezione Problemi diUltralytics o nella sezione di discussione indicata di seguito.

FAQ

Come si inizia a utilizzare VisionEye Object Mapping con Ultralytics YOLO11 ?

Per iniziare a usare VisionEye Object Mapping con Ultralytics YOLO11 , è necessario installare il pacchetto Ultralytics YOLO tramite pip. Quindi, si può utilizzare il codice di esempio fornito nella documentazione per impostare il rilevamento degli oggetti con VisionEye. Ecco un semplice esempio per iniziare:

import cv2

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")

while True:
    ret, frame = cap.read()
    if not ret:
        break

    results = model.predict(frame)
    for result in results:
        # Perform custom logic with result
        pass

    cv2.imshow("visioneye", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

Quali sono le caratteristiche principali della capacitĂ  di tracciamento degli oggetti di VisionEye utilizzando Ultralytics YOLO11 ?

Il tracciamento degli oggetti di VisionEye con Ultralytics YOLO11 consente agli utenti di seguire il movimento degli oggetti all'interno di un fotogramma video. Le caratteristiche principali includono:

  1. Tracciamento degli oggetti in tempo reale: Segue gli oggetti mentre si muovono.
  2. Identificazione degli oggetti: Utilizza i potenti algoritmi di rilevamento di YOLO11.
  3. Calcolo della distanza: Calcola le distanze tra gli oggetti e i punti specificati.
  4. Annotazione e visualizzazione: Fornisce marcatori visivi per gli oggetti tracciati.

Ecco un breve frammento di codice che dimostra il tracciamento con VisionEye:

import cv2

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")

while True:
    ret, frame = cap.read()
    if not ret:
        break

    results = model.track(frame, persist=True)
    for result in results:
        # Annotate and visualize tracking
        pass

    cv2.imshow("visioneye-tracking", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

Per una guida completa, visitate il sito VisionEye Object Mapping with Object Tracking.

Come posso calcolare le distanze con il modello YOLO11 di VisionEye?

Il calcolo della distanza con VisionEye e Ultralytics YOLO11 comporta la determinazione della distanza degli oggetti rilevati da un punto specifico dell'inquadratura. Migliora le capacitĂ  di analisi spaziale, utili in applicazioni come la guida autonoma e la sorveglianza.

Ecco un esempio semplificato:

import math

import cv2

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
center_point = (0, 480)  # Example center point
pixel_per_meter = 10

while True:
    ret, frame = cap.read()
    if not ret:
        break

    results = model.track(frame, persist=True)
    for result in results:
        # Calculate distance logic
        distances = [
            (math.sqrt((box[0] - center_point[0]) ** 2 + (box[1] - center_point[1]) ** 2)) / pixel_per_meter
            for box in results
        ]

    cv2.imshow("visioneye-distance", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

Per istruzioni dettagliate, consultare VisionEye con calcolo della distanza.

Perché utilizzare Ultralytics YOLO11 per la mappatura e il tracciamento degli oggetti?

Ultralytics YOLO11 è rinomato per la sua velocità, precisione e facilità di integrazione, che lo rendono la scelta migliore per la mappatura e il tracciamento degli oggetti. I vantaggi principali includono:

  1. Prestazioni all'avanguardia: Offre un'elevata precisione nel rilevamento degli oggetti in tempo reale.
  2. FlessibilitĂ : Supporta diverse attivitĂ  come il rilevamento, il tracciamento e il calcolo della distanza.
  3. ComunitĂ  e supporto: Ampia documentazione e comunitĂ  GitHub attiva per la risoluzione dei problemi e i miglioramenti.
  4. FacilitĂ  d'uso: l'API intuitiva semplifica le attivitĂ  complesse, consentendo una rapida implementazione e iterazione.

Per ulteriori informazioni sulle applicazioni e sui vantaggi, consultate la documentazione di Ultralytics YOLO11 .

Come posso integrare VisionEye con altri strumenti di apprendimento automatico come Comet o ClearML?

Ultralytics YOLO11 può integrarsi perfettamente con vari strumenti di apprendimento automatico come Comet e ClearML, migliorando il tracciamento degli esperimenti, la collaborazione e la riproducibilità. Seguite le guide dettagliate su come utilizzare YOLOv5 con Comet e integrare YOLO11 con ClearML per iniziare.

Per ulteriori approfondimenti ed esempi di integrazione, consultate la nostra Guida alle integrazioni diUltralytics .

📅 Created 12 months ago ✏️ Updated 2 months ago

Commenti