VisionEye Ver Mapeo de objetos mediante Ultralytics YOLOv8 馃殌
驴Qu茅 es el mapeo de objetos VisionEye?
Ultralytics YOLOv8 VisionEye ofrece a los ordenadores la capacidad de identificar y se帽alar objetos, simulando la precisi贸n de observaci贸n del ojo humano. Esta funcionalidad permite a los ordenadores discernir y centrarse en objetos concretos, de forma muy parecida a como el ojo humano observa los detalles desde un punto de vista concreto.
Muestras
Vista VisionEye | VisionEye Vista con seguimiento de objetos | VisionEye Vista con c谩lculo de distancia |
---|---|---|
VisionEye Ver Mapeo de objetos mediante Ultralytics YOLOv8 | VisionEye Ver Mapeo de objetos con seguimiento de objetos mediante Ultralytics YOLOv8 | Vista VisionEye con c谩lculo de distancias mediante Ultralytics YOLOv8 |
Cartograf铆a de objetos VisionEye mediante YOLOv8
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
model = YOLO("yolov8n.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("yolov8n.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("yolov8s.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
Argumentos
Nombre | Tipo | Por defecto | Descripci贸n |
---|---|---|---|
color |
tuple |
(235, 219, 11) |
Color del centroide de la l铆nea y del objeto |
pin_color |
tuple |
(255, 0, 255) |
Color preciso VisionEye |
Nota
Para cualquier consulta, no dudes en publicar tus preguntas en la Secci贸n de Cuestiones deUltralytics o en la secci贸n de debate mencionada m谩s abajo.
PREGUNTAS FRECUENTES
驴C贸mo empiezo a utilizar la cartograf铆a de objetos VisionEye con Ultralytics YOLOv8 ?
Para empezar a utilizar el mapeo de objetos de VisionEye con Ultralytics YOLOv8 , primero tendr谩s que instalar el paquete Ultralytics YOLO mediante pip. A continuaci贸n, puedes utilizar el c贸digo de ejemplo proporcionado en la documentaci贸n para configurar la detecci贸n de objetos con VisionEye. Aqu铆 tienes un ejemplo sencillo para empezar:
import cv2
from ultralytics import YOLO
model = YOLO("yolov8n.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()
驴Cu谩les son las principales caracter铆sticas de la capacidad de seguimiento de objetos de VisionEye mediante Ultralytics YOLOv8 ?
El seguimiento de objetos de VisionEye con Ultralytics YOLOv8 permite a los usuarios seguir el movimiento de los objetos dentro de un fotograma de v铆deo. Entre sus principales caracter铆sticas se incluyen:
- Seguimiento de objetos en tiempo real: Sigue a los objetos mientras se mueven.
- Identificaci贸n de objetos: Utiliza los potentes algoritmos de detecci贸n de YOLOv8.
- C谩lculo de distancias: Calcula distancias entre objetos y puntos especificados.
- Anotaci贸n y Visualizaci贸n: Proporciona marcadores visuales para los objetos rastreados.
Aqu铆 tienes un breve fragmento de c贸digo que demuestra el seguimiento con VisionEye:
import cv2
from ultralytics import YOLO
model = YOLO("yolov8n.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()
Para obtener una gu铆a completa, visita el Mapa de objetos VisionEye con seguimiento de objetos.
驴C贸mo puedo calcular distancias con el modelo YOLOv8 de VisionEye?
El c谩lculo de distancias con VisionEye y Ultralytics YOLOv8 consiste en determinar la distancia de los objetos detectados desde un punto concreto del fotograma. Mejora la capacidad de an谩lisis espacial, 煤til en aplicaciones como la conducci贸n aut贸noma y la vigilancia.
He aqu铆 un ejemplo simplificado:
import math
import cv2
from ultralytics import YOLO
model = YOLO("yolov8s.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()
Para obtener instrucciones detalladas, consulta VisionEye con c谩lculo de distancia.
驴Por qu茅 deber铆a utilizar Ultralytics YOLOv8 para el mapeo y seguimiento de objetos?
Ultralytics YOLOv8 es famoso por su velocidad, precisi贸n y facilidad de integraci贸n, lo que lo convierte en la mejor opci贸n para el mapeo y seguimiento de objetos. Sus principales ventajas son:
- Rendimiento de vanguardia: Ofrece una gran precisi贸n en la detecci贸n de objetos en tiempo real.
- Flexibilidad: Admite diversas tareas, como detecci贸n, seguimiento y c谩lculo de distancias.
- Comunidad y soporte: Amplia documentaci贸n y activa comunidad GitHub para la resoluci贸n de problemas y mejoras.
- Facilidad de uso: La API intuitiva simplifica las tareas complejas, permitiendo una r谩pida implantaci贸n e iteraci贸n.
Para m谩s informaci贸n sobre solicitudes y prestaciones, consulta la documentaci贸n deUltralytics YOLOv8 .
驴C贸mo puedo integrar VisionEye con otras herramientas de aprendizaje autom谩tico como Comet o ClearML?
Ultralytics YOLOv8 puede integrarse perfectamente con varias herramientas de aprendizaje autom谩tico como Comet y ClearML, mejorando el seguimiento de los experimentos, la colaboraci贸n y la reproducibilidad. Sigue las gu铆as detalladas sobre c贸mo utilizar YOLOv5 con Comet e integrar YOLOv8 con ClearML para empezar.
Para m谩s informaci贸n y ejemplos de integraci贸n, consulta nuestra Gu铆a de integracionesUltralytics .