目录
一、问题描述
所用环境:
- 学校远程ubuntu服务器
- xshell
- pycharm
我需要运行一个和学校服务器连接并且需要用到OpenCV和cv中的imshow方法的代码,然后进行图片显示框的弹出,运行时出现了如下问题。
查阅了资料之后发现是因为远程连接服务器没法把图片进行回传,尝试过的解决方案:
- 需要使用sudo命令在服务器终端进行一些包的安装,但是我是学校服务器,非root用户无法使用sudo指令;
- 然后又说要下载XManager或者MobaXterm等其他支持图形回传的远程软件,但是后续操作也需要在服务器上进行sudo命令的配置,我也操作不了;
- 进行了pyqt5和opencv的uninstall和install,换了版本也不行。
后来我找到一个免费的软件vcxsrv,可以完成远程服务器的图片回传,成功解决了问题。
二、解决方法
使用vcxsrv使远程服务器的显示内容显示到本地windows上。
1. 安装vcxsrv之后打开XLauncher进行配置
VcXsrv+putty远程访问linux图形界面_vcxserv_jdzzgtc的博客-CSDN博客
- 打开xlauncher之后选multiple windows,然后一定要把下面的display number改成
- 选择 start no client
- 把最后一项也勾选上
- 完成
- 完成后XManager就会作为小窗口运行在后台
2. 配置xshell
- 右击你的会话然后选择属性
- 把在隧道中选择转发X11到X DISPLAY(D):localhost:0.0
3. 把plugs文件夹进行移动
(这一步我也做了,但是不知道是不是这一步起了作用,大家可以先忽略这一步试一下)
4. 把opencv挑一个低版本重新下载一下
我下载了3.4.8.29
5. 服务器终端操作
使用 echo $DISPLAY显示端口,然后在服务器终端使用export DISPLAY=XX.0,我的是11.0。
echo $DISPLAY
export DISPLAY=localhost:XX.0
6.pycharm操作
在pycharm中run -> edit configurations ->enrivonment variables中把DISPLAY这个环境变量添加进去,我的就是DISPLAY=localhost:11.0。
7. 运行成功!!!
如果重新打开服务器后又出现连接不上的问题,则重新按照第5步开始再进行配置,因为可能连接的display的localhost改变了,再设置一遍就行。
三、问题小结
这个问题花了我一天时间终于解决了,好感人,使用免费的软件vcxsrv,然后进行xshell、服务器和pycharm的配置即可