通常情况下,远程机器上无法直接可视化图像结果,或者需要将数据移动到具有图形用户界面的本地设备。VSCode集成终端允许直接渲染图像。本文将展示如何结合ultralytics和预测结果使用这一功能。
仅与Linux和MacOS兼容。请检查VSCode仓库、问题状态或文档,以获取关于Windows支持在终端使用sixel查看图像的更新。
首先,必须在VSCode中启用以下设置:terminal.integrated.enableImages和terminal.integrated.gpuAcceleration。
{
"terminal.integrated.gpuAcceleration": "auto",
"terminal.integrated.enableImages": false
}
在虚拟环境中安装python-sixel库。这是PySixel库的一个分支,该库不再维护。
pip install sixel
加载模型并执行推理,然后绘制结果并存储在变量中。有关推理参数和处理结果的更多信息,请参考预测模式页面。
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo11n.pt")
# 在图像上运行推理
results = model.predict(source="ultralytics/assets/bus.jpg")
# 绘制推理结果
plot = results[0].plot()
现在,使用OpenCV将numpy.ndarray转换为字节数据。然后使用io.BytesIO创建一个“文件类”对象。
import io
import cv2
# 结果图像作为字节
im_bytes = cv2.imencode(".png", plot)[1].tobytes()
# 图像字节作为文件类对象
mem_file = io.BytesIO(im_bytes)
也可以使用其他图像扩展名。
只需要返回的对象索引1。
创建一个SixelWriter实例,然后使用.draw()方法在终端中绘制图像。
from sixel import SixelWriter
# 创建sixel写入器对象
w = SixelWriter()
# 在终端中绘制sixel图像
w.draw(mem_file)
使用此示例与视频或动画GIF帧未经测试。自行尝试风险自负。
import io
import cv2
from sixel import SixelWriter
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo11n.pt")
# 在图像上运行推理
results = model.predict(source="ultralytics/assets/bus.jpg")
# 绘制推理结果
plot = results[0].plot()
# 结果图像作为字节
im_bytes = cv2.imencode(".png", plot)[1].tobytes()
mem_file = io.BytesIO(im_bytes)
w = SixelWriter()
w.draw(mem_file)
也可以使用其他图像扩展名。
只需要返回的对象索引1。
有关如何使用参数,请参见绘制方法参数,以查看可以使用的参数。
如何在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图形兼容的原生终端功能。Windows对使用sixel的终端图形的支持仍在开发中。有关Windows兼容性的更新,请检查VSCode问题状态和文档。
如果在VSCode终端中显示图像时遇到问题怎么办?
如果在使用sixel在VSCode终端中显示图像时遇到问题:
确保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帧目前未经测试,可能不受支持。建议从静态图像开始,并验证兼容性。自行尝试视频结果风险自负,同时请注意性能限制。有关绘制推理结果的更多信息,请访问预测模式页面。
如何排查python-sixel库的问题?
要排查python-sixel库的问题:
确保库已正确安装在虚拟环境中:
pip install sixel
验证具有必要的Python和系统依赖项。
参考python-sixel GitHub仓库以获取更多文档和社区支持。
仔细检查代码,特别是SixelWriter的使用和图像数据转换步骤,以查找潜在错误。