انتقل إلى المحتوى

عرض نتائج الاستدلال في محطة طرفية

مثال Sixel للصورة في المحطة الطرفية

صورة من موقع libsixel .

الحافز

عند الاتصال بجهاز بعيد ، عادة ما يكون تصور نتائج الصور غير ممكن أو يتطلب نقل البيانات إلى جهاز محلي باستخدام واجهة المستخدم الرسومية. يسمح الطرف الطرفي المدمج VSCode بعرض الصور مباشرة. هذا عرض توضيحي قصير حول كيفية استخدام هذا جنبا إلى جنب مع ultralytics مع نتائج التنبؤ.

تحذير

متوافق فقط مع لينكس وماك. تحقق من VSCode مستودعفحص حالة المشكلةأو توثيق للحصول على تحديثات حول دعم Windows لعرض الصور في المحطة الطرفية باستخدام sixel.

البروتوكولات المتوافقة مع VSCode لعرض الصور باستخدام المحطة المدمجة هي sixel و iTerm. سيوضح هذا الدليل استخدام sixel بروتوكول.

عملية

  1. أولا ، يجب عليك تمكين الإعدادات terminal.integrated.enableImages و terminal.integrated.gpuAcceleration في VSCode.

    "terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on"
    "terminal.integrated.enableImages": false
    

VSCode تمكين إعداد الصور الطرفية

  1. قم بتثبيت الزر python-sixel المكتبة في بيئتك الافتراضية. هذا هو شوكة من PySixel المكتبة ، التي لم تعد محفوظة.

    pip install sixel
    
  2. استيراد المكتبات ذات الصلة

    import io
    
    import cv2 as cv
    
    from ultralytics import YOLO
    from sixel import SixelWriter
    
  3. قم بتحميل نموذج وتنفيذ الاستدلال ، ثم ارسم النتائج وتخزينها في متغير. اطلع على المزيد حول وسيطات الاستدلال والعمل مع النتائج في صفحة وضع التنبؤ .

    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolov8n.pt")
    
    # Run inference on an image
    results = model.predict(source="ultralytics/assets/bus.jpg")
    
    # Plot inference results
    plot = results[0].plot() #(1)!
    
    1. راجع معلمات أسلوب الرسم لرؤية الوسيطات المحتملة لاستخدامها.
  4. الآن ، استخدم OpenCV لتحويل numpy.ndarray ل bytes بيانات. ثم استخدم io.BytesIO لإنشاء كائن "يشبه الملف".

    # Results image as bytes
    im_bytes = cv.imencode(
        ".png", #(1)!
        plot,
        )[1].tobytes() #(2)!
    
    # Image bytes as a file-like object
    mem_file = io.BytesIO(im_bytes)
    
    1. من الممكن استخدام امتدادات صور أخرى أيضا.
    2. فقط الكائن في الفهرس 1 هناك حاجة إلى إرجاع.
  5. إنشاء ملف SixelWriter ، ثم استخدم الزر .draw() طريقة لرسم الصورة في المحطة.

    # Create sixel writer object
    w = SixelWriter()
    
    # Draw the sixel image in the terminal
    w.draw(mem_file)
    

مثال على نتائج الاستدلال

عرض الصورة في المحطة الطرفية

خطر

لم يتم اختبار استخدام هذا المثال مع مقاطع الفيديو أو إطارات GIF المتحركة. حاول على مسؤوليتك الخاصة.

مثال على التعليمات البرمجية الكاملة

import io

import cv2 as cv

from ultralytics import YOLO
from sixel import SixelWriter

# Load a model
model = YOLO("yolov8n.pt")

# Run inference on an image
results = model.predict(source="ultralytics/assets/bus.jpg")

# Plot inference results
plot = results[0].plot() #(3)!

# Results image as bytes
im_bytes = cv.imencode(
    ".png", #(1)!
    plot,
    )[1].tobytes() #(2)!

mem_file = io.BytesIO(im_bytes)
w = SixelWriter()
w.draw(mem_file)
  1. من الممكن استخدام امتدادات صور أخرى أيضا.
  2. فقط الكائن في الفهرس 1 هناك حاجة إلى إرجاع.
  3. راجع معلمات أسلوب الرسم لرؤية الوسيطات المحتملة لاستخدامها.

بقشيش

قد تحتاج إلى استخدام clear "لمحو" عرض الصورة في الجهاز.



تم النشر في 2024-03-09, اخر تحديث 2024-03-09
المؤلفون: برهان كيو (1)

التعليقات