Link to this sectionعرض نتائج الاستدلال في الطرفية#
صورة من موقع libsixel
Link to this sectionالدافع#
عند الاتصال بجهاز بعيد، عادة ما يكون تصور نتائج الصور أمراً غير ممكن أو يتطلب نقل البيانات إلى جهاز محلي يحتوي على واجهة مستخدم رسومية. تتيح الطرفية المدمجة في VSCode إمكانية عرض الصور مباشرة. هذا عرض توضيحي قصير حول كيفية استخدام ذلك بالتزامن مع ultralytics مع نتائج التنبؤ.
متوافق فقط مع Linux و MacOS. تحقق من مستودع VSCode، أو راجع حالة المشكلة، أو التوثيق للحصول على تحديثات حول دعم Windows لعرض الصور في الطرفية باستخدام sixel.
البروتوكولات المتوافقة مع VSCode لعرض الصور باستخدام الطرفية المدمجة هي sixel و iTerm. سيوضح هذا الدليل استخدام بروتوكول sixel.
Link to this sectionالعملية#
-
أولاً، يجب عليك تفعيل إعدادات
terminal.integrated.enableImagesوterminal.integrated.gpuAccelerationفي VSCode."terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on" "terminal.integrated.enableImages": true
-
قم بتثبيت مكتبة
python-sixelفي بيئتك الافتراضية. هذه نسخة مفرعة من مكتبةPySixelالتي لم تعد مدعومة.pip install sixel -
قم بتحميل نموذج وتنفيذ الاستدلال، ثم ارسم النتائج وقم بتخزينها في متغير. تعرف على المزيد حول وسائط الاستدلال والعمل مع النتائج في صفحة وضع التنبؤ.
from ultralytics import YOLO # Load a model model = YOLO("yolo26n.pt") # Run inference on an image results = model.predict(source="ultralytics/assets/bus.jpg") # Plot inference results plot = results[0].plot() # (1)!- راجع معلمات طريقة الرسم للاطلاع على الوسائط الممكن استخدامها.
-
الآن، استخدم OpenCV لتحويل
np.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الذي يتم إرجاعه.
-
قم بإنشاء مثيل
SixelWriter، ثم استخدم الطريقة.draw()لرسم الصورة في الطرفية.from sixel import SixelWriter # Create sixel writer object w = SixelWriter() # Draw the sixel image in the terminal w.draw(mem_file)
Link to this sectionمثال على نتائج الاستدلال#
لم يتم اختبار استخدام هذا المثال مع مقاطع الفيديو أو إطارات GIF المتحركة. جرب ذلك على مسؤوليتك الخاصة.
Link to this sectionمثال برمجي كامل#
import io
import cv2
from sixel import SixelWriter
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.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الذي يتم إرجاعه. - راجع معلمات طريقة الرسم للاطلاع على الوسائط الممكن استخدامها.
قد تحتاج إلى استخدام clear لـ "مسح" عرض الصورة في الطرفية.
Link to this sectionالأسئلة الشائعة#
Link to this sectionكيف يمكنني عرض نتائج استدلال YOLO في طرفية VSCode على نظام macOS أو Linux؟#
لعرض نتائج استدلال YOLO في طرفية VSCode على نظام macOS أو Linux، اتبع الخطوات التالية:
-
تفعيل إعدادات VSCode الضرورية:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto" -
تثبيت مكتبة sixel:
pip install sixel -
تحميل نموذج YOLO الخاص بك وتشغيل الاستدلال:
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model.predict(source="path_to_image") plot = results[0].plot() -
تحويل صورة نتيجة الاستدلال إلى بايتات وعرضها في الطرفية:
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)
لمزيد من التفاصيل، قم بزيارة صفحة وضع التنبؤ.
Link to this sectionلماذا يعمل بروتوكول sixel فقط على Linux و macOS؟#
بروتوكول sixel مدعوم حالياً فقط على Linux و macOS لأن هذه المنصات تمتلك إمكانيات طرفية أصلية متوافقة مع رسومات sixel. لا يزال دعم رسومات الطرفية باستخدام sixel على Windows قيد التطوير. للحصول على تحديثات حول توافق Windows، تحقق من حالة مشكلة VSCode والتوثيق.
Link to this sectionماذا لو واجهت مشاكل في عرض الصور في طرفية VSCode؟#
إذا واجهت مشاكل في عرض الصور في طرفية VSCode باستخدام sixel:
-
تأكد من تفعيل الإعدادات الضرورية في VSCode:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto" -
تحقق من تثبيت مكتبة sixel:
pip install sixel -
تحقق من كود تحويل بيانات الصورة والرسم الخاص بك بحثاً عن أخطاء. على سبيل المثال:
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، وقم بزيارة قسم معلمات طريقة الرسم للحصول على إرشادات إضافية.
Link to this sectionهل يمكن لـ YOLO عرض نتائج استدلال الفيديو في الطرفية باستخدام sixel؟#
عرض نتائج استدلال الفيديو أو إطارات GIF المتحركة باستخدام sixel في الطرفية غير مختبر حالياً وقد لا يكون مدعوماً. نوصي بالبدء بصور ثابتة والتحقق من التوافق. جرب نتائج الفيديو على مسؤوليتك الخاصة، مع الأخذ في الاعتبار قيود الأداء. لمزيد من المعلومات حول رسم نتائج الاستدلال، قم بزيارة صفحة وضع التنبؤ.
Link to this sectionكيف يمكنني استكشاف أخطاء مكتبة python-sixel وإصلاحها؟#
لاستكشاف أخطاء مكتبة python-sixel وإصلاحها:
-
تأكد من تثبيت المكتبة بشكل صحيح في بيئتك الافتراضية:
pip install sixel -
تحقق من أن لديك تبعيات Python والنظام الضرورية.
-
راجع مستودع GitHub الخاص بـ python-sixel للحصول على توثيق إضافي ودعم المجتمع.
-
تحقق جيداً من الكود الخاص بك بحثاً عن أخطاء محتملة، وتحديداً استخدام
SixelWriterوخطوات تحويل بيانات الصورة.
للحصول على مزيد من المساعدة حول العمل مع نماذج YOLO وتكامل sixel، راجع صفحات توثيق التصدير ووضع التنبؤ.