Çıkarım Sonuçlarını Terminalde Görüntüleme
Resim libsixel web sitesinden alınmıştır.
Motivasyon
Uzak bir makineye bağlanırken, normalde görüntü sonuçlarını görselleştirmek mümkün değildir veya verilerin bir GUI ile yerel bir cihaza taşınmasını gerektirir. VSCode entegre terminali, görüntülerin doğrudan oluşturulmasına olanak tanır. Bu, bunun aşağıdakilerle birlikte nasıl kullanılacağına dair kısa bir gösterimdir ultralytics
ile tahmi̇n sonuçlari.
Uyarı
Yalnızca Linux ve MacOS ile uyumludur. VSCode'u kontrol edin depo, kontrol et Sorun durumuveya dokümantasyon ile terminaldeki görüntüleri görüntülemek için Windows desteği hakkındaki güncellemeler için sixel
.
Entegre terminali kullanarak görüntüleri görüntülemek için VSCode uyumlu protokoller şunlardır sixel
ve iTerm
. Bu kılavuz, aşağıdakilerin kullanımını gösterecektir sixel
Protokol.
Süreç
-
İlk olarak, ayarları etkinleştirmelisiniz
terminal.integrated.enableImages
veterminal.integrated.gpuAcceleration
VSCode'da.
-
Yükleme
python-sixel
sanal ortamınızdaki kütüphane. Bu bir çatal ..PySixel
artık bakımı yapılmayan kütüphane. -
İlgili kütüphaneleri içe aktarın
-
Bir model yükleyin ve çıkarımı yürütün, ardından sonuçları çizin ve bir değişkende saklayın. Çıkarım argümanları ve sonuçlarla çalışma hakkında daha fazla bilgi için tahmin modu sayfasına bakın.
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)!
- Kullanılabilecek olası bağımsız değişkenleri görmek için plot yöntemi parametrelerine bakın.
-
Şimdi, OpenCV'yi kullanarak
numpy.ndarray
içinbytes
veri. Sonra kullanınio.BytesIO
"dosya benzeri" bir nesne yapmak için.# 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)
- Diğer görüntü uzantılarını da kullanmak mümkündür.
- Yalnızca dizindeki nesne
1
iade edilene ihtiyaç vardır.
-
Oluşturmak
SixelWriter
örneğini kullanın ve ardından.draw()
yöntemini kullanarak terminaldeki görüntüyü çizin.
Örnek Çıkarım Sonuçları
Tehlike
Bu örneğin videolar veya animasyonlu GIF kareleri ile kullanımı test edilmemiştir. Deneme riski size aittir.
Tam Kod Örneği
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)
- Diğer görüntü uzantılarını da kullanmak mümkündür.
- Yalnızca dizindeki nesne
1
iade edilene ihtiyaç vardır. - Kullanılabilecek olası bağımsız değişkenleri görmek için plot yöntemi parametrelerine bakın.
İpucu
Kullanmanız gerekebilir clear
terminaldeki görüntüyü "silmek" için.