
在 VSCode 终端中通过 Sixel 直接查看 Ultralytics YOLO 推理结果【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics本文讲解如何在 Linux / macOS 上启用 VSCode 集成终端内置的图片渲染能力借助sixel图形协议把 Ultralytics YOLO 的推理结果检测框、掩码、关键点等标注图直接画在运行推断的终端里。该方案特别适合通过 SSH 连接远程服务器、以及没有图形界面GUI的无头机器场景让你无需把图片回传本地即可即时检查预测效果。读完本文你将掌握从 VSCode 配置、环境安装到 Python 全链路代码的完整落地方法并理解其中每一步背后的原理。为什么要在终端里显示推理结果在常规流程中YOLO 推理完成后的可视化依赖两种途径调用Results.show()弹出图形窗口或通过Results.save()写盘后在本地查看。但当你在 SSH 会话中操作远程无头机器时这两种方式都不方便——远程没有桌面环境可以弹窗图片文件也保存在远端需要额外的文件传输才能看到。VSCode 集成终端具备直接渲染图片的能力。只要运行推断的终端支持图片协议就能在推理发生的位置原地检视 predict 模式 产出的可视化结果无需把文件拷回本地带 GUI 的电脑。VSCode 终端兼容的图片协议有两种sixel与iTerm2 的iTerm图片协议本文示范的是sixel协议。注意此方案目前只兼容Linux 和 macOS。Windows 上使用sixel在终端查看图片仍处于开发中Windows 支持状态请留意 VSCode 官方仓库与文档更新。三步走从配置到出图第 1 步启用 VSCode 终端图片渲染在 VSCode 的settings.json中开启两项设置terminal.integrated.gpuAcceleration: auto # auto 是默认值也可以设为 on terminal.integrated.enableImages: trueterminal.integrated.gpuAcceleration用于开启终端 GPU 加速渲染sixel图片绘制依赖该能力terminal.integrated.enableImages则显式允许集成终端显示图片。修改后需要重启集成终端或重开窗口使设置生效。第 2 步安装sixelPython 库在你的虚拟环境中安装python-sixel库pip install sixel该库是一个仍在维护的 fork源自已不再维护的PySixel库并且是构建在 PillowPIL之上的一个轻量 Python 封装。因此环境中需要同时具备可用的 Pillow。第 3 步跑通推理 → 绘图 → 编码 → 绘制链路先加载模型并执行推断把标注结果保存到变量。完整参数与结果对象用法参见 predict 模式文档from ultralytics import YOLO # 加载模型 model YOLO(yolo26n.pt) # 对图片执行推理仓库自带的示例图片也可用 ultralytics/assets/bus.jpg results model.predict(sourceultralytics/assets/bus.jpg) # 绘制推理结果返回 np.ndarray 格式的标注图 plot results[0].plot()然后用 OpenCV 把np.ndarray编码为bytes数据再通过io.BytesIO包装成类文件对象供图片库读取import io import cv2 # 把结果图编码为字节 im_bytes cv2.imencode( .png, # 也可以使用其他图片扩展名如 .jpg plot, )[1].tobytes() # cv2.imencode 返回 (retval, buf)这里只需要索引 1 的缓冲区 # 把字节包装成文件类对象 mem_file io.BytesIO(im_bytes)最后创建SixelWriter实例并调用.draw()把图片绘制到终端from sixel import SixelWriter # 创建 sixel writer 对象 w SixelWriter() # 在终端中绘制 sixel 图片 w.draw(mem_file)运行后带标注的推理结果图会直接出现在你的 VSCode 终端中。完整代码示例把上述三步整合为一个可独立运行的脚本import io import cv2 from sixel import SixelWriter from ultralytics import YOLO # 加载模型 model YOLO(yolo26n.pt) # 对图片执行推理 results model.predict(sourceultralytics/assets/bus.jpg) # 绘制推理结果返回 BGR 顺序的 np.ndarray plot results[0].plot() # 把结果图编码为 PNG 字节 im_bytes cv2.imencode( .png, # 也可以换成 .jpg 等其他扩展名 plot, )[1].tobytes() # 只需要 cv2.imencode 返回值中索引为 1 的对象 # 包装为文件类对象并绘制 mem_file io.BytesIO(im_bytes) w SixelWriter() w.draw(mem_file)清除提示终端中的图片视图需要用clear命令擦除。代码背后的原理与源码佐证plot输出什么示例中的plot results[0].plot()并非直接得到可显示图像而是返回一张BGR 颜色顺序的np.ndarray标注图。这一点可以从源码确认在 Results.plot 的实现中方法内部创建Annotator时深拷贝原始图像deepcopy(self.orig_img if img is None else img)然后根据任务类型逐一叠加掩码、检测框、分类概率文本、语义分割图、深度热力图与关键点最终通过annotator.result(pil)返回标注结果。这也是为什么后续必须用 OpenCV 的cv2.imencode把数组编码为标准图片字节——SixelWriter.draw()期望接收的是一个文件对象而不是内存数组。plot()方法支持哪些参数plot()提供了丰富的绘制定制参数便于你控制终端中显示的内容参数类型说明默认值confbool是否标注置信度分数Trueline_widthfloat框线宽度None时随图片尺寸缩放Nonefont_sizefloat文字字号None时随图片尺寸缩放Nonefontstr标注文字使用的字体Arial.ttfpilbool是否以 PIL Image 对象返回Falseimgnp.ndarray/torch.Tensor替代绘制底图张量需为连续的 HWC BGR uint8Nonekpt_radiusint关键点绘制半径5kpt_linebool是否连线关键点Truelabelsbool是否标注类别标签Trueboxesbool是否叠加边界框Truemasksbool是否叠加掩码Trueprobsbool是否展示分类概率Trueshowbool是否用系统默认看图器直接弹出Falsesavebool是否把标注图保存到filenameFalsefilenamestrsaveTrue时的保存路径Nonecolor_modestr着色模式如instance或classclasstxt_colortuple标注文字颜色BGR(255, 255, 255)其中conf、labels、boxes、masks等开关可以直接决定你在终端看到的标注密度line_width、font_size为None时自动按图片尺寸缩放无需手动适配不同分辨率的输入。完整参数说明可查阅 Results 类参考文档。编码与包装为什么缺一不可cv2.imencode(.png, plot)返回一个(retval, buf)元组retval是编码成功标志buf是内存缓冲区。示例通过[1].tobytes()只取缓冲区并转成bytes随后io.BytesIO将其包装为文件接口最终交由SixelWriter.draw()消费。编码时还可以换成.jpg、.bmp等其他扩展名——终端图片质量与传输体积会随格式不同而变化静态图场景通常推荐无损的.png。应用场景与限制SSH 远程开发在远程机器上原地查看推断效果免去文件回传。无头服务器 / CI 环境没有图形栈也能可视化输出。快速调参与复核逐张核对置信度阈值、类别过滤等参数改动后的可视化效果。需要注意的限制视频与 GIF 动图场景未经测试。使用本示例处理视频帧或动画 GIF 帧没有经过验证若确有需要请自担风险——尤其要考虑逐帧渲染带来的性能开销。建议先从静态图片开始验证协议兼容性再决定是否扩展到连续帧。推理结果绘制的更多细节参见 predict 模式。常见问题解答如何在 macOS / Linux 的 VSCode 终端中查看 YOLO 推理结果按以下步骤操作启用 VSCode 设置terminal.integrated.enableImages: true terminal.integrated.gpuAcceleration: auto安装 sixel 库pip install sixel加载 YOLO 模型并运行推理from ultralytics import YOLO model YOLO(yolo26n.pt) results model.predict(sourceultralytics/assets/bus.jpg) 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 仓库与官方文档。终端中什么都画不出来怎么办如果没有任何渲染输出按顺序排查确认terminal.integrated.enableImages与terminal.integrated.gpuAcceleration均已开启见上文设置然后重启集成终端让配置生效。确认sixel安装在你脚本运行所用的同一个虚拟环境中pip install sixel。确认编码前plot是合法的np.ndarray——若图像为空或不是有效数组cv2.imencode会直接报错。参见上文plot()参数表中各开关的取值含义。如果问题依旧可查阅 VSCode 仓库中关于终端图片支持状态的最新说明。能否在终端中用 sixel 显示视频推理结果目前未经测试可能不被支持。sixel 逐帧绘制视频或动画 GIF 存在协议与性能上的双重不确定性建议先用静态图片确认兼容性确有需要再谨慎尝试视频场景。python-sixel库报错如何排查sixel包是已停止维护的PySixel库的维护 fork同时也是基于 PillowPIL的轻量封装。若import sixel失败或SixelWriter().draw()抛错依次确认包是否装入了你当前激活的虚拟环境Pillow 是否可用传入draw()的图片生成链路是否正确Results.plot()的输出是否符合预期。关于传入draw()的图片如何生成可参考 predict 模式文档 中绘制结果相关章节。总结在 VSCode 集成终端中通过 sixel 查看 YOLO 推理结果本质上是一条推理绘图 → OpenCV 编码 → 内存文件包装 → SixelWriter 绘制的管道Results.plot()从源码层面ultralytics/engine/results.py保证输出 BGR 顺序的np.ndarray编码后用sixel渲染进终端。它把可视化能力带进了 SSH、无头服务器等无 GUI 场景让模型输出检查与开发调试闭环在同一个终端窗口内完成。【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考