عرض نتائج الاستدلال في محطة طرفية
الصورة من موقع libsixel الإلكتروني.
الحافز
عند الاتصال بجهاز بعيد ، عادة ما يكون تصور نتائج الصور غير ممكن أو يتطلب نقل البيانات إلى جهاز محلي باستخدام واجهة المستخدم الرسومية. يسمح الطرف الطرفي المدمج VSCode بعرض الصور مباشرة. هذا عرض توضيحي قصير حول كيفية استخدام هذا جنبا إلى جنب مع ultralytics
مع نتائج التنبؤ.
تحذير
متوافق فقط مع لينكس وماك. تحقق من VSCode مستودعفحص حالة المشكلةأو توثيق للحصول على تحديثات حول دعم Windows لعرض الصور في المحطة الطرفية باستخدام sixel
.
البروتوكولات المتوافقة مع VSCode لعرض الصور باستخدام المحطة المدمجة هي sixel
و iTerm
. سيوضح هذا الدليل استخدام sixel
بروتوكول.
عملية
-
أولا ، يجب عليك تمكين الإعدادات
terminal.integrated.enableImages
وterminal.integrated.gpuAcceleration
في VSCode.
-
قم بتثبيت الزر
python-sixel
المكتبة في بيئتك الافتراضية. هذا هو شوكة منPySixel
المكتبة ، التي لم تعد محفوظة. -
استيراد المكتبات ذات الصلة
-
قم بتحميل نموذج وتنفيذ الاستدلال ، ثم ارسم النتائج وتخزينها في متغير. اطلع على المزيد حول وسيطات الاستدلال والعمل مع النتائج في صفحة وضع التنبؤ .
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)!
- راجع معلمات أسلوب الرسم لرؤية الوسيطات المحتملة لاستخدامها.
-
الآن ، استخدم 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
هناك حاجة إلى إرجاع.
-
إنشاء ملف
SixelWriter
، ثم استخدم الزر.draw()
طريقة لرسم الصورة في المحطة.
مثال على نتائج الاستدلال
خطر
لم يتم اختبار استخدام هذا المثال مع مقاطع الفيديو أو إطارات 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
هناك حاجة إلى إرجاع. - راجع معلمات أسلوب الرسم لرؤية الوسيطات المحتملة لاستخدامها.
بقشيش
قد تحتاج إلى استخدام clear
"لمحو" عرض الصورة في الجهاز.