सामग्री पर जाएं

VisionEye View ऑब्जेक्ट मैपिंग का उपयोग कर Ultralytics YOLOv8 🚀

विजनआई ऑब्जेक्ट मैपिंग क्या है?

Ultralytics YOLOv8 VisionEye कंप्यूटर को वस्तुओं की पहचान करने और इंगित करने की क्षमता प्रदान करता है, जो मानव आंख की अवलोकन संबंधी सटीकता का अनुकरण करता है। यह कार्यक्षमता कंप्यूटर को विशिष्ट वस्तुओं पर विचार करने और ध्यान केंद्रित करने में सक्षम बनाती है, जिस तरह से मानव आंख किसी विशेष दृष्टिकोण से विवरण देखती है।

नमूने

विजनआई व्यू ऑब्जेक्ट ट्रैकिंग के साथ VisionEye दृश्य VisionEye दृश्य दूरी गणना के साथ
VisionEye View ऑब्जेक्ट मैपिंग का उपयोग कर Ultralytics YOLOv8 VisionEye व्यू ऑब्जेक्ट मैपिंग का उपयोग करके ऑब्जेक्ट ट्रैकिंग के साथ Ultralytics YOLOv8 VisionEye दृश्य का उपयोग कर दूरी गणना के साथ Ultralytics YOLOv8
VisionEye View ऑब्जेक्ट मैपिंग का उपयोग कर Ultralytics YOLOv8 VisionEye व्यू ऑब्जेक्ट मैपिंग का उपयोग करके ऑब्जेक्ट ट्रैकिंग के साथ Ultralytics YOLOv8 VisionEye दृश्य का उपयोग कर दूरी गणना के साथ Ultralytics YOLOv8

VisionEye ऑब्जेक्ट मैपिंग का उपयोग कर 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 तर्क

नाम प्रकार चूक या क़िस्‍म
color tuple (235, 219, 11) रेखा और वस्तु केन्द्रक रंग
pin_color tuple (255, 0, 255) VisionEye पिनपॉइंट रंग

नोट

किसी भी पूछताछ के लिए, में अपने प्रश्नों को पोस्ट करने के लिए स्वतंत्र महसूस करें Ultralytics मुद्दा अनुभाग या नीचे उल्लिखित चर्चा अनुभाग।



Created 2023-12-18, Updated 2024-06-18
Authors: glenn-jocher (12), IvorZhu331 (1), RizwanMunawar (1)

टिप्पणियाँ