主要是为了在远程服务器的python中,使用matplotlib和opencv的imshow显示图像,配置好后也可以使用远程服务器的其它图形化界面,gedit之类的。
以下文字内本地IP是你连接服务器的电脑的IP,与服务器IP对应。
例如我的两台机器都在局域网,本地IP是:172.20.121.69;服务器IP是:172.23.138.67。具体替换为你自己的IP。
环境
- 本地:Windows10
- 服务器:Ubuntu18.04
一、配置VcXsrv
1.下载
https://sourceforge.net/projects/vcxsrv/
下载了一路安装即可,注意设置一下安装路径,其它都是默认。
2.X0.hosts中添加服务器IP
在VcXsrv的安装路径找到X0.hosts
在末尾添加服务器IP:
3.启动VcXsrv
在VcXsrv的安装路径启动xlaunch.exe.
我把两个需要修改的地方画了箭头放了出来,其余均是默认设置。
至此VcXsrv配置完成。
一、配置VSCode
1.下载Remote X11
注意:本地和服务器都需要安装该插件。如果你只在本地安装了插件,再次搜索它,然后你会看到这样的选项,安装就完事了,我这里放的图是Beautify:
于是在已安装的插件列表你会看到两个Remote X11:
2.修改ssh配置文件
进入你的ssh配置C:\Users\xxx\.ssh\config
在末尾添加:
ForwardX11 yes
ForwardX11Trusted yes
ForwardAgent yes
3.添加环境变量
在VSC里登录服务器(都想在服务器显示图像了,你应该知道怎么连接远程服务器吧?),将以下的xxx换成你的本地IP,添加环境变量:
vim ~/.bashrc
export DISPLAY="xxx:0.0"
source ~/.bashrc
不要在VSCode的settings.json里设置环境变量,至少我没有成功。
至此已经配置完成,接下来测试一下能否调用GUI。
三、测试GUI
1.xclock
远程终端输入xclock
:
2.gedit
3.matplotlib
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
matplotlib.use('TkAgg')
x=np.random.rand(100,100)
plt.imshow(x,cmap='gray')
plt.show()
4.opencv
import cv2
import numpy as np
x=np.random.rand(100,100)
cv2.imshow('',x)
cv2.waitKey(0)
opencv还有一点问题,关闭弹出的这个窗口后,无法继续执行剩下的代码,目前还是先用matplotlib吧。
如果不能显示的话,可以看一下以下链接:
https://blog.csdn.net/Dteam_f/article/details/109806294