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

VS Code远程SSH中cv2.waitKey(0)无响应问题求助(NXP i.MX8M)

解决i.MX8M嵌入式Linux远程SSH运行OpenCV时waitKey无响应的问题

核心原因

远程SSH会话默认未关联开发板本地的X11 GUI会话,导致键盘输入无法传递到OpenCV的窗口事件循环;或窗口未获取输入焦点。

解决方案步骤

1. 配置DISPLAY环境变量

  • 在开发板本地终端(直接连接键盘、显示器的会话)执行:
    echo $DISPLAY
    
    通常输出为:0或:0.0。
  • 在VS Code的远程SSH终端中,设置对应DISPLAY变量:
    export DISPLAY=:0
    
    (若本地终端输出是:0.0,则改为export DISPLAY=:0.0)
  • 重新运行你的Python代码。

2. 强制窗口获取焦点

在代码中添加窗口置顶和焦点设置逻辑,确保OpenCV窗口能捕获输入:

import numpy as np
import cv2

img = cv2.imread('L5.jpeg')
cv2.imshow('Window name', img)
# 强制窗口置顶并获取焦点
cv2.setWindowProperty('Window name', cv2.WND_PROP_TOPMOST, 1)
# 短暂延迟确保窗口初始化完成
cv2.waitKey(100)

key = cv2.waitKey(0)
print(key)

if key == ord('q'):
   print("pressed q")

cv2.destroyAllWindows()

3. 检查OpenCV编译配置

确认你的OpenCV版本支持GUI后端(如GTK+):
在SSH终端执行:

python -c "import cv2; print(cv2.getBuildInformation())"

查看输出中GUI板块,确保GTK+ 2.x或GTK+ 3.x显示为YES。如果是NO,需要重新编译OpenCV并启用GUI后端支持。

4. 本地会话验证测试

直接在开发板本地终端(接键盘的会话)运行代码,如果waitKey正常响应,说明问题完全来自远程SSH的环境配置,重点检查步骤1的DISPLAY变量设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:24:07