Bir Terminalde Çıkarım Sonuçlarını Görüntüleme
libsixel web sitesinden alınan görüntü.
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 işlenmesine olanak tanır. Bu, bununla birlikte nasıl kullanılacağına dair kısa bir gösterimdir ultralytics
ile tahmin sonuçları.
Uyarı
Yalnızca Linux ve MacOS ile uyumludur. Kontrol edin VSCode deposu, kontrol edin Sorun durumu, veya belgeleme terminalde görüntüleri görüntülemek için Windows desteğiyle ilgili 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, kullanımını gösterecektir: sixel
protokolü.
İşlem
-
İlk olarak, ayarları etkinleştirmelisiniz
terminal.integrated.enableImages
veterminal.integrated.gpuAcceleration
VSCode'da."terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on" "terminal.integrated.enableImages": true
-
Şunu yükleyin:
python-sixel
sanal ortamınızdaki kütüphane. Bu bir fork nınPySixel
artık bakımı yapılmayan kütüphane.pip install sixel
-
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 bilgiyi tahmin modu sayfasında bulabilirsiniz.
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)!
- Kullanılabilecek olası argümanları görmek için plot metodu parametrelerine bakın.
-
Şimdi, şunu kullanın: OpenCV dönüştürmek için
np.ndarray
içinbytes
veri. Ardından şunu kullanın:io.BytesIO
"dosya benzeri" bir nesne oluşturmak için.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)
- Diğer resim uzantılarını da kullanmak mümkündür.
- Yalnızca dizindeki nesne
1
döndürülen gereklidir.
-
Bir tane oluşturun
SixelWriter
örneği ve ardından şunu kullanın:.draw()
görüntüyü terminalde çizmek için yöntem.from sixel import SixelWriter # Create sixel writer object w = SixelWriter() # Draw the sixel image in the terminal w.draw(mem_file)
Örnek Çıkarım Sonuçları
Tehlike
Videolar veya animasyonlu GIF kareleriyle bu örneği kullanmak test edilmemiştir. Kendi sorumluluğunuzda deneyin.
Tam Kod Örneği
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)
- Diğer resim uzantılarını da kullanmak mümkündür.
- Yalnızca dizindeki nesne
1
döndürülen gereklidir. - Kullanılabilecek olası argümanları görmek için plot metodu parametrelerine bakın.
İpucu
Şunu kullanmanız gerekebilir: clear
terminaldeki görüntü görünümünü "silmek" için.
SSS
macOS veya Linux'ta bir VSCode terminalinde YOLO çıkarım sonuçlarını nasıl görüntüleyebilirim?
macOS veya Linux'ta bir VSCode terminalinde YOLO çıkarım sonuçlarını görüntülemek için şu adımları izleyin:
-
Gerekli VSCode ayarlarını etkinleştirin:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto"
-
Sixel kütüphanesini kurun:
pip install sixel
-
YOLO modelinizi yükleyin ve çıkarımı çalıştırın:
from ultralytics import YOLO model = YOLO("yolo11n.pt") results = model.predict(source="path_to_image") plot = results[0].plot()
-
Çıkarım sonucu görüntüsünü baytlara dönüştürün ve terminalde görüntüleyin:
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)
Daha fazla ayrıntı için tahmin modu sayfasını ziyaret edin.
Sixel protokolü neden yalnızca Linux ve macOS'ta çalışıyor?
Sixel protokolü şu anda yalnızca Linux ve macOS'ta desteklenmektedir, çünkü bu platformlar sixel grafikleriyle uyumlu yerel terminal özelliklerine sahiptir. Windows'un sixel kullanarak terminal grafikleri için desteği hala geliştirme aşamasındadır. Windows uyumluluğuyla ilgili güncellemeler için VSCode Sorun durumu ve belgelerine bakın.
VSCode terminalinde görüntüleri görüntülerken sorunlarla karşılaşırsam ne olur?
VSCode terminalinde sixel kullanarak görüntüleri görüntülerken sorunlarla karşılaşırsanız:
-
VSCode'da gerekli ayarların etkinleştirildiğinden emin olun:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto"
-
Sixel kütüphanesi kurulumunu doğrulayın:
pip install sixel
-
Görüntü verisi dönüştürme ve çizim kodunuzu hatalara karşı kontrol edin. Örneğin:
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)
Sorunlar devam ederse, ek rehberlik için VSCode deposuna danışın ve çizim metodu parametreleri bölümünü ziyaret edin.
YOLO, video çıkarım sonuçlarını terminalde sixel kullanarak görüntüleyebilir mi?
Terminalde sixel kullanarak video çıkarım sonuçlarını veya animasyonlu GIF çerçevelerini görüntülemek şu anda test edilmemiştir ve desteklenmeyebilir. Statik görüntülerle başlamanızı ve uyumluluğu doğrulamanızı öneririz. Performans kısıtlamalarını göz önünde bulundurarak video sonuçlarını kendi sorumluluğunuzda deneyin. Çıkarım sonuçlarını çizme hakkında daha fazla bilgi için tahmin modu sayfasını ziyaret edin.
ile ilgili sorunları nasıl giderebilirim? python-sixel
kütüphane mi?
ile ilgili sorunları gidermek için python-sixel
kütüphane:
-
Kitaplığın sanal ortamınızda doğru şekilde kurulduğundan emin olun:
pip install sixel
-
Gerekli Python ve sistem bağımlılıklarına sahip olduğunuzu doğrulayın.
-
Ek belgeler ve topluluk desteği için python-sixel GitHub deposuna bakın.
-
Olası hatalar için kodunuzu, özellikle de kullanımını iki kez kontrol edin.
SixelWriter
ve görüntü verisi dönüştürme adımları.
YOLO modelleri ve sixel entegrasyonu ile çalışma konusunda daha fazla yardım için dışa aktarma ve tahmin modu dokümantasyon sayfalarına bakın.