ΠΡΠΎΡΠΌΠΎΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠΌΠΎΠ·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠ°ΠΉΡΠ° libsixel.
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡ
ΠΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΈΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ. ΠΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» VSCode ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΊΠΎΡΠΎΡΠΊΠ°Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ultralytics
Ρ Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ.
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ Ρ Linux ΠΈ MacOS. ΠΡΠΎΠ²Π΅ΡΡ VSCode Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΏΡΠΎΠ²Π΅ΡΡ Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ Windows Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Ρ sixel
.
ΠΡΠΎΡΠΎΠΊΠΎΠ»Ρ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ Ρ VSCode, Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ sixel
ΠΈ iTerm
. ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ sixel
ΠΡΠΎΡΠΎΠΊΠΎΠ».
ΠΡΠΎΡΠ΅ΡΡ
-
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡΡΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
terminal.integrated.enableImages
ΠΈterminal.integrated.gpuAcceleration
Π² VSCode.
-
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈ
python-sixel
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π² ΡΠ²ΠΎΠ΅ΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ. ΠΡΠΎ ΠΠΈΠ»ΠΊΠ° ΠΈΠ·PySixel
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ. -
ΠΠΌΠΏΠΎΡΡΠΈΡΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
-
ΠΠ°Π³ΡΡΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈ Π²ΡΠ²ΠΎΠ΄, Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΡΠΈΡΠ°ΠΉ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ.
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)!
- Π‘ΠΌΠΎΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° plot, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
-
Π’Π΅ΠΏΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ 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
ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ.
-
Π‘ΠΎΠ·Π΄Π°ΠΉ
SixelWriter
ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ.draw()
ΠΌΠ΅ΡΠΎΠ΄, ΡΡΠΎΠ±Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠΌΠΎΠ·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
ΠΠΏΠ°ΡΠ½ΠΎΡΡΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ 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
ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ. - Π‘ΠΌΠΎΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° plot, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΊΠΎΠ½Π΅ΡΠ½ΠΈΠΊ
Π’Π΅Π±Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ clear
ΡΡΠΎΠ±Ρ "ΡΡΠ΅ΡΠ΅ΡΡ" Π²ΠΈΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅.
Π‘ΠΎΠ·Π΄Π°Π½ΠΎ 2024-03-09, ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ 2024-04-27
ΠΠ²ΡΠΎΡΡ: glenn-jocher (1), Burhan-Q (1)