تخطي إلى المحتوى

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

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

الصورة من موقع libsixel الإلكتروني.

التحفيز

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

تحذير

متوافق فقط مع نظامي Linux و MacOS. تحقق من مستودع VSCode، تحقق حالة الإصدارأو الوثائق للحصول على تحديثات حول دعم ويندوز لعرض الصور في المحطة الطرفية مع sixel.

بروتوكولات VSCode المتوافقة مع 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 تمكين إعداد الصور الطرفية

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

    pip install sixel
    
  3. تحميل نموذج وتنفيذ الاستدلال، ثم رسم النتائج وتخزينها في متغير. راجع المزيد حول وسيطات الاستدلال والعمل مع النتائج في صفحة وضع التنبؤ.

    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo11n.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 لإنشاء كائن "شبيه بالملف".

    import io
    
    import cv2
    
    # Results image as bytes
    im_bytes = cv2.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() لرسم الصورة في الطرفية.

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

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

عرض الصورة في المنصة

الخطر

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

مثال على الكود الكامل

import io

import cv2
from sixel import SixelWriter

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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 = cv2.imencode(
    ".png",  # (1)!
    plot,
)[1].tobytes()  # (2)!

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

نصيحة

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

الأسئلة الشائعة

كيف يمكنني عرض نتائج الاستدلال YOLO في محطة VSCode الطرفية على نظامي macOS أو Linux؟

لعرض نتائج الاستدلال YOLO في محطة VSCode الطرفية على نظامي macOS أو Linux، اتبع الخطوات التالية:

  1. قم بتمكين إعدادات VSCode الضرورية:

    "terminal.integrated.enableImages": true
    "terminal.integrated.gpuAcceleration": "auto"
    
  2. تثبيت مكتبة سكسيل:

    pip install sixel
    
  3. تحميل نموذج YOLO وتشغيل الاستدلال:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n.pt")
    results = model.predict(source="path_to_image")
    plot = results[0].plot()
    
  4. قم بتحويل صورة نتيجة الاستدلال إلى بايت وعرضها في الطرفية:

    import io
    
    import cv2
    from sixel import SixelWriter
    
    im_bytes = cv2.imencode(".png", plot)[1].tobytes()
    mem_file = io.BytesIO(im_bytes)
    SixelWriter().draw(mem_file)
    

لمزيد من التفاصيل، قم بزيارة صفحة وضع التنبؤ.

لماذا يعمل بروتوكول Sixel على نظامي Linux و macOS فقط؟

بروتوكول sixel مدعوم حاليًا فقط على نظامي Linux و macOS لأن هذه المنصات لديها إمكانيات طرفية أصلية متوافقة مع رسومات sixel. لا يزال دعم ويندوز للرسومات الطرفية باستخدام sixel قيد التطوير. للحصول على تحديثات حول التوافق مع ويندوز، راجع حالة إصدار VSCode والوثائق.

ماذا لو واجهت مشاكل في عرض الصور في محطة VSCode الطرفية؟

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

  1. تأكد من تمكين الإعدادات اللازمة في VSCode:

    "terminal.integrated.enableImages": true
    "terminal.integrated.gpuAcceleration": "auto"
    
  2. تحقق من تثبيت مكتبة Sixel:

    pip install sixel
    
  3. تحقق من تحويل بيانات الصورة ورمز الرسم البياني بحثًا عن الأخطاء. على سبيل المثال:

    import io
    
    import cv2
    from sixel import SixelWriter
    
    im_bytes = cv2.imencode(".png", plot)[1].tobytes()
    mem_file = io.BytesIO(im_bytes)
    SixelWriter().draw(mem_file)
    

إذا استمرت المشاكل، راجع مستودع VSCode، وراجع قسم معلمات أسلوب الرسم للحصول على إرشادات إضافية.

هل يمكن YOLO عرض نتائج استدلال الفيديو في المحطة الطرفية باستخدام Sixel؟

إن عرض نتائج استدلال الفيديو أو إطارات GIF المتحركة باستخدام Sixel في المنصة لم يتم اختباره حاليًا وقد لا يكون مدعومًا. نوصي بالبدء بصور ثابتة والتحقق من التوافق. حاول عرض نتائج الفيديو على مسؤوليتك الخاصة، مع مراعاة قيود الأداء. للمزيد من المعلومات حول رسم نتائج الاستدلال البياني، قم بزيارة صفحة وضع التنبؤ.

كيف يمكنني استكشاف المشكلات وإصلاحها في python-sixel مكتبة؟

لاستكشاف مشكلات استكشاف الأخطاء وإصلاحها في python-sixel المكتبة:

  1. تأكد من تثبيت المكتبة بشكل صحيح في بيئتك الافتراضية:

    pip install sixel
    
  2. تحقق من أن لديك Python وتبعيات النظام الضرورية.

  3. ارجع إلى مستودع GitHubpython -sixel GitHub للحصول على وثائق إضافية ودعم المجتمع.

  4. تحقق مرة أخرى من الشيفرة البرمجية الخاصة بك بحثًا عن الأخطاء المحتملة، وتحديدًا استخدام SixelWriter وخطوات تحويل بيانات الصورة.

لمزيد من المساعدة في العمل مع النماذج YOLO وتكامل Sixel، راجع صفحات وثائق وضع التصدير والتنبؤ.

📅 تم الإنشاء قبل 9 أشهر ✏️ تم التحديث منذ 2 أشهر

التعليقات