在终端中查看推理结果
来自 libsixel 网站的图像。
动机
当连接到远程机器时,通常无法可视化图像结果,或者需要将数据移动到带有 GUI 的本地设备。VSCode 集成终端允许直接渲染图像。这是一个关于如何结合使用它的简短演示 ultralytics
使用 预测结果.
用于使用集成终端查看图像的 VSCode 兼容协议是 sixel
和 iTerm
。本指南将演示如何使用 sixel
协议。
处理
-
首先,您必须启用设置
terminal.integrated.enableImages
和terminal.integrated.gpuAcceleration
在 VSCode 中。"terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on" "terminal.integrated.enableImages": true
-
使用 pip 安装
python-sixel
您虚拟环境中的库。这是一个 fork(派生) 的PySixel
库,该库不再维护。pip install sixel
-
加载模型并执行推理,然后绘制结果并存储在变量中。有关推理参数和使用结果的更多信息,请参见预测模式页面。
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)!
- 请参阅绘图方法参数,以查看可以使用的参数。
-
现在,使用 OpenCV 要转换
np.ndarray
到bytes
数据。然后使用io.BytesIO
以创建一个“类文件”对象。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)
- 也可以使用其他图像扩展名。
- 仅索引处的对象
1
需要返回的结果。
-
创建一个
SixelWriter
实例,然后使用.draw()
在终端中绘制图像的 method。from sixel import SixelWriter # Create sixel writer object w = SixelWriter() # Draw the sixel image in the terminal w.draw(mem_file)
推理结果示例
危险
尚未测试将此示例用于视频或动画 GIF 帧。尝试风险自负。
完整代码示例
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)
- 也可以使用其他图像扩展名。
- 仅索引处的对象
1
需要返回的结果。 - 请参阅绘图方法参数,以查看可以使用的参数。
提示
您可能需要使用 clear
“擦除”终端中图像的视图。
常见问题
如何在 macOS 或 Linux 上的 VSCode 终端中查看 YOLO 推理结果?
要在 macOS 或 Linux 的 VSCode 终端中查看 YOLO 推理结果,请按照以下步骤操作:
-
启用必要的 VSCode 设置:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto"
-
安装 sixel 库:
pip install sixel
-
加载您的 YOLO 模型并运行推理:
from ultralytics import YOLO model = YOLO("yolo11n.pt") results = model.predict(source="path_to_image") plot = results[0].plot()
-
将推理结果图像转换为字节并在终端中显示:
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)
有关更多详细信息,请访问预测模式页面。
为什么 sixel 协议只在 Linux 和 macOS 上有效?
sixel 协议目前仅在 Linux 和 macOS 上受支持,因为这些平台具有与 sixel 图形兼容的本机终端功能。使用 sixel 的 Windows 终端图形支持仍在开发中。有关 Windows 兼容性的更新,请查看 VSCode Issue 状态和文档。
如果在 VSCode 终端中显示图像时遇到问题,该怎么办?
如果在 VSCode 终端中使用 sixel 显示图像时遇到问题:
-
确保 VSCode 中已启用必要的设置:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto"
-
验证 sixel 库的安装:
pip install sixel
-
检查您的图像数据转换和绘图代码是否存在错误。例如:
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)
如果问题仍然存在,请查阅 VSCode 仓库,并访问 绘图方法参数 部分以获取更多指导。
YOLO可以使用sixel在终端中显示视频推理结果吗?
目前尚未测试在终端中使用 sixel 显示视频推理结果或动画 GIF 帧,并且可能不支持。我们建议从静态图像开始并验证兼容性。尝试视频结果时,请自行承担风险,并注意性能限制。有关绘制推理结果的更多信息,请访问 predict mode 页面。
如何解决以下问题 python-sixel
库?
要解决以下问题: python-sixel
库:
-
确保该库已正确安装在您的虚拟环境中:
pip install sixel
-
验证您是否具备必要的 Python 和系统依赖项。
-
有关更多文档和社区支持,请参阅python-sixel GitHub 存储库。
-
仔细检查您的代码是否存在潜在错误,特别是以下用法
SixelWriter
以及图像数据转换步骤。
有关使用YOLO模型和sixel集成的更多帮助,请参阅导出和预测模式文档页面。