İçeriğe geç

Çıkarım Sonuçlarını Terminalde Görüntüleme

Terminal'de görüntü için altı örnek

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ç

  1. İlk olarak, ayarları etkinleştirmelisiniz terminal.integrated.enableImages ve terminal.integrated.gpuAcceleration VSCode'da.

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

VSCode etkinleştirme terminal görüntüleri ayarı

  1. Yükleme python-sixel sanal ortamınızdaki kütüphane. Bu bir çatal .. PySixel artık bakımı yapılmayan kütüphane.

    pip install sixel
    
  2. İlgili kütüphaneleri içe aktarın

    import io
    
    import cv2 as cv
    
    from ultralytics import YOLO
    from sixel import SixelWriter
    
  3. 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)!
    
    1. Kullanılabilecek olası bağımsız değişkenleri görmek için plot yöntemi parametrelerine bakın.
  4. Şimdi, OpenCV'yi kullanarak numpy.ndarray için bytes veri. Sonra kullanın io.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)
    
    1. Diğer görüntü uzantılarını da kullanmak mümkündür.
    2. Yalnızca dizindeki nesne 1 iade edilene ihtiyaç vardır.
  5. Oluşturmak SixelWriter örneğini kullanın ve ardından .draw() yöntemini kullanarak terminaldeki görüntüyü çizin.

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

Örnek Çıkarım Sonuçları

Terminalde Görüntüyü Görüntüle

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)
  1. Diğer görüntü uzantılarını da kullanmak mümkündür.
  2. Yalnızca dizindeki nesne 1 iade edilene ihtiyaç vardır.
  3. 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.



Oluşturma 2024-03-09, Güncelleme 2024-04-27
Yazarlar: glenn-jocher (1), Burhan-Q (1)

Yorumlar