सामग्री पर जाएं

टर्मिनल में अनुमान परिणाम देखना

टर्मिनल में छवि का सिक्सेल उदाहरण

libsixel वेबसाइट से छवि।

प्रेरणा

रिमोट मशीन से कनेक्ट करते समय, सामान्य रूप से छवि परिणामों की कल्पना करना संभव नहीं है या जीयूआई के साथ स्थानीय डिवाइस पर डेटा ले जाने की आवश्यकता होती है। VSCode एकीकृत टर्मिनल सीधे छवियों को प्रस्तुत करने की अनुमति देता है। यह एक छोटा प्रदर्शन है कि इसके साथ संयोजन के रूप में इसका उपयोग कैसे किया जाए ultralytics के साथ भविष्यवाणी के परिणाम.

चेतावनी

केवल लिनक्स और मैकओएस के साथ संगत। VSCode की जाँच करें कोषजाँच समस्या की स्थितिनहीं तो प्रलेखन के साथ टर्मिनल में छवियों को देखने के लिए विंडोज समर्थन के बारे में अपडेट के लिए sixel.

एकीकृत टर्मिनल का उपयोग करके छवियों को देखने के लिए VSCode संगत प्रोटोकॉल हैं sixel और iTerm. यह मार्गदर्शिका के उपयोग को प्रदर्शित करेगी sixel प्रोटोकॉल।

प्रक्रिया

  1. सबसे पहले, आपको सेटिंग्स सक्षम करनी होंगी terminal.integrated.enableImages और terminal.integrated.gpuAcceleration VSCode में।

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

VSCode टर्मिनल इमेज सेटिंग सक्षम करें

  1. स्थापित करें python-sixel अपने आभासी वातावरण में पुस्तकालय। यह एक है कांटा का PySixel पुस्तकालय, जिसका अब रखरखाव नहीं किया जाता है।

    pip install sixel
    
  2. प्रासंगिक पुस्तकालयों को आयात करें

    import io
    
    import cv2 as cv
    
    from ultralytics import YOLO
    from sixel import SixelWriter
    
  3. एक मॉडल लोड करें और अनुमान निष्पादित करें, फिर परिणामों को प्लॉट करें और एक चर में स्टोर करें। पूर्वानुमान मोड पृष्ठ पर अनुमान तर्कों और परिणामों के साथ कार्य करने के बारे में अधिक देखें.

    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. उपयोग करने के लिए संभावित तर्क देखने के लिए प्लॉट विधि पैरामीटर देखें।
  4. अब, कन्वर्ट करने के लिए 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. अन्य छवि एक्सटेंशन का भी उपयोग करना संभव है।
    2. केवल सूचकांक पर वस्तु 1 जिसे लौटाया जाता है, उसकी जरूरत है।
  5. एक बनाएँ SixelWriter instance, और उसके बाद का उपयोग करें .draw() टर्मिनल में छवि खींचने की विधि।

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

उदाहरण अनुमान परिणाम

टर्मिनल में छवि देखें

ख़तरा

वीडियो या एनिमेटेड 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. अन्य छवि एक्सटेंशन का भी उपयोग करना संभव है।
  2. केवल सूचकांक पर वस्तु 1 जिसे लौटाया जाता है, उसकी जरूरत है।
  3. उपयोग करने के लिए संभावित तर्क देखने के लिए प्लॉट विधि पैरामीटर देखें।

नोक

आपको उपयोग करने की आवश्यकता हो सकती है clear टर्मिनल में छवि के दृश्य को "मिटाने" के लिए।



2024-03-09 बनाया गया, अपडेट किया गया 2024-03-09
लेखक: बुरहान-क्यू (1)

टिप्पणियाँ