You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VPS服务器上实现OpenCV imshow()窗口可视化?

解决方案

方法1:将检测后的视频保存为文件,在VSCode中预览

这是和你双击播放原视频最接近的方式——直接把YOLO检测后的帧写入新视频文件,之后在VSCode里打开该文件即可查看结果。

修改代码如下:

import cv2
from ultralytics import YOLO

model = YOLO('yolov5nu.pt')
cap = cv2.VideoCapture('Bowling1.mp4')

# 获取原视频的宽、高、帧率参数
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))

# 创建视频写入对象,指定输出格式和路径
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('Bowling1_detected.mp4', fourcc, fps, (frame_width, frame_height))

while cap.isOpened():
    success, frame = cap.read()
    if success:
        results = model(frame)
        annotated_frame = results[0].plot()
        # 将带检测框的帧写入输出视频
        out.write(annotated_frame)
    else:
        break

# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()

运行完成后,在VSCode文件浏览器中找到生成的Bowling1_detected.mp4,双击即可像原视频一样播放查看检测结果。

方法2:通过VSCode的X11转发实时显示检测窗口

如果想实时查看检测画面,无需保存文件,可以配置VSCode的X11转发,让远程VPS的cv2窗口显示在本地电脑上:

步骤1:本地安装X11服务器

  • Windows:安装VcXsrv或Xming
  • macOS:安装XQuartz
  • Linux:系统自带X11,无需额外安装

步骤2:配置VSCode远程SSH连接

在本地~/.ssh/config文件中添加以下配置:

Host your_vps_hostname
    HostName your_vps_ip
    User your_username
    ForwardX11 yes
    ForwardX11Trusted yes

步骤3:在VPS中设置环境变量

连接VPS后,在终端执行:

export DISPLAY=:0

也可以将该命令加入~/.bashrc或~/.zshrc,实现每次登录自动生效。

步骤4:重新运行原代码

此时cv2.imshow的窗口会直接显示在本地电脑上,实现实时可视化。

关于NNPACK警告的说明

Could not initialize NNPACK! Reason: Unsupported hardware仅为警告,不会影响代码运行——这是因为VPS的CPU不支持NNPACK加速,YOLO会自动切换到其他推理后端,无需额外处理。

内容的提问来源于stack exchange,提问作者ailauli69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 13:53:31