vscode + ssh + xming + pyqt / matplotlib / imshow

问题定义

通过vscode,远程连接服务器之后,使用matplotlib以及pyqt进行图形化界面的编写,需要将界面show出来,由于程序本身是运行在服务器上的,所以无法直接显示到我们的本地系统,所以需要通过Xming来辅助实现。

解决步骤

  1. vscode通过ssh远程连接服务器,步骤参考我之前的文章
  2. 在vscode中添加拓展(remote X11)
    在这里插入图片描述
  3. 下载Xming,下载链接
  4. 配置Xming,参考Reference[2]中步骤
  5. 下载MobaXterm并配置连接,下载链接
  6. 在MobaXterm中,查看当前开放的DISPLAY的地址
    $ echo $DISPLAY
    localhost:10.0  # 有时候会是localhost:11.0
    
  7. 开始配置vscode,首先需要将.ssh\config文件重新编辑一下,加入以下部分
      ForwardX11 yes
      ForwardX11Trusted yes
      ForwardAgent yes
    
    效果图
  8. 在vscode的项目中生成launch.json文件,参考Reference[3]中步骤
  9. 配置launch.json,添加以下部分
                "env":{
                    "DISPLAY":"localhost:10.0"
                }
    
    在这里插入图片描述
  10. 在vscode中输入命令echo $DISPLAY
  11. 如果不是空的,并输出了类似 localhost:10.0 的结果的话,跳过本步骤。如果输出是空的,则vim ~/.bashrc,加入以下部分
    # insert environmentvariable to X11
    export DISPLAY="localhost:10.0"  # 可能是localhost:11.0,看MobaXterm输出情况
    
    然后退出编辑,输入source ~/.bashrc使变量生效
  12. 输入xclock看会不会有一个时钟跳出来
    • 如果跳出来了,就说明成功了,恭喜
    • 如果一直没有跳出来,就说明地址有问题,localhost:10.0中到底是多少需要全部都对上,可以自己按照上述步骤复查一遍
    • 如果报错,说明配置有问题,需要自行百度

Reference

  1. VSCode 连接远程服务器使用图形化界面(GUI)
  2. Vscode 远程ssh服务器及远程图形显示
  3. vscode 的launch.json文件(一)
### 正确配置与使用 `imshow` 函数 为了能够在 VSCode远程开发环境中正确使用 OpenCV 的 `imshow` 函数,需确保安装了必要的依赖库并进行了适当设置。 #### 安装必要依赖包 对于 Ubuntu 或 Debian 用户来说,在遇到“The function is not implemented. Rebuild the library...”错误时,应该考虑安装特定的图形支持库。这可以通过命令行来实现: ```bash sudo apt-get update sudo apt-get install libgtk2.0-dev pkg-config ``` 上述操作有助于解决因缺少 GUI 支持而导致的功能未实现问题[^2]。 #### 配置 OpenCV 版本 如果之前已经安装过 opencv-python-headless,则可能需要将其卸载,并重新安装完整的 OpenCV 库版本以获得图像显示功能的支持: ```bash pip uninstall opencv-python-headless pip install opencv-contrib-python ``` 此过程可以确保所使用的 Python 绑定包含了所有必需组件,从而允许正常使用像 `imshow` 这样的可视化工具。 #### 测试环境配置有效性 完成以上更改之后,建议通过简单的测试程序确认一切正常工作。可以在项目文件夹内创建一个新的 Python 文件用于尝试调用 `cv2.imshow()` 方法查看窗口能否成功弹出以及图片是否能够被展示出来。 ```python import cv2 img = cv2.imread('example.jpg') cv2.imshow('Image', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段代码会读取一张名为 example.jpg 的图片(请提前准备好该文件),并通过 `imshow` 显示它;按下任意键关闭窗口[^3]。 #### 设置 VSCode 和 CMake 工具链 考虑到大部分代码是在 VSCode 中编写而成的事实,同时也有利用 CMake 来构建项目的经历,那么还需要保证 IDE 能够识别到本地服务器上的编译器路径及其关联资源。具体做法可参照官方文档说明调整相应的 JSON 文件参数,比如 c_cpp_properties.json 等[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值