前言
本文是Win11系统,linux是Ubuntu20.04的无桌面版。在运行yolov5模型代码时,由于代码中存在cv2.imshow()
导致运行出错,如下图所示。
这是由于没有图形管理,需要本地Windows系统开启x11 server,这样linux系统可以实现x11转发,让代码运行的结果显示在Windows系统上。因为Windows自带的powershell就可以通过ssh远程连接linux服务器,所以本文并没有使用xshell等工具,直接下载VcXsrv,然后开启x11服务就行。当然,最简单的解决方式是修改代码,把显示结果的cv2.imshow()
代码注释掉。
一、VcXsrv是什么?
VcXsrv是一个Windows操作系统上的X服务器软件,用于在Windows系统上运行和显示使用X Window系统的图形应用程序。它允许用户在Windows上运行Linux和其他Unix-like操作系统的图形界面应用程序,通过网络连接到远程服务器或在本地运行。VcXsrv是基于X.Org服务器项目的一个分支,提供了对X Window系统的支持和功能。
二、下载安装
1.下载
下载地址:VcXsrv的下载地址
点击Download即可下载
2.VcXsrv安装
这里勾选桌面快捷方式,方便使用。
这里选着一个安装文件,点击install安装即可。
3.VcXsrv使用
安装好VcXsrv之后,桌面会有一个XLaunch的图标,双击打开。
打开之后,出现Display settings的界面,这是一个x11 server配置的设置。
这里的Display number选着默认的-1就行,这是把server端口号设置为0.0
接下来直接下一页。
这里需要勾选第三个Disable access control。这个意思是接受所有x11的转发请求,这里看个人情况,有些设备不勾选也能收到,本人测试自己的设备不勾选接收不到,所以建议勾选。
最后直接完成即可开启X server服务,电脑右下角会出现XLaunch的图标,鼠标放上面会显示端口号。如下图所示,说明X server成功开启了。Save configuration是保存当前的配置,下次开启可以直接使用保存的选项。
三、连接linux服务器重新运行程序
1、ssh连接linux服务器
可以运行命令ssh username@IP地址
,例如ssh zhangsan@192.168.1.123
,然后输入密码就可以了。
2、重新运行
显示Results saved to runs/detect/exp,表示成功运行!