vscode中使用ssh连接linux(树莓派)opencv不能使用imshow()函数输出图片和视频的解决方法

1、vscode使用插件ssh树莓派

2、树莓派中./test能直接调用,但是vscode命令行不能报错

Can't initialize GTK backend in function 'cvInitSystem'

 3、发现在mobaxterm中可以直接运行且能出现画面

4、发现问题:通过vscode,远程连接服务器之后,需要将界面show出来,由于程序本身是运行在服务器上的,所以无法直接显示到我们的本地系统,所以需要通过Xming来辅助实现。

解决方法

1、在vscode中添加拓展(remote X11)第一个

2、下载MobaXterm并配置连接

3、在MobaXterm中,查看当前开放的DISPLAY的地址

$ echo $DISPLAY
localhost:10.0  # 有时候会是localhost:11.0

4、开始配置vscode,首先需要将.ssh\config文件重新编辑一下,加入以下部分

  ForwardX11 yes
  ForwardX11Trusted yes
  ForwardAgent yes

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host mypi
    HostName 192.168.43.101
    User pi
    ForwardX11 yes
    ForwardX11Trusted yes
    ForwardAgent yes
  
#Host mypi ssh设备名字随便起
#   HostName 192.168.43.101 设备ip地址
#    User pi  用户名

5、在vscode的项目中生成launch.json文件

6、配置launch.json,添加以下部分

            "env":{
                "DISPLAY":"localhost:10.0"
            }

7、在vscode中输入命令echo $DISPLAY    如果不是空的,并输出了类似 localhost:10.0 的结果的话,跳过本步骤。如果输出是空的,则vim ~/.bashrc,加入以下部分

# insert environmentvariable to X11
export DISPLAY="localhost:10.0"  # 可能是localhost:11.0,看MobaXterm输出情况

然后退出编辑,输入source ~/.bashrc使变量生效

这样输出了就正确了

 

注意:要保持mobaxterm的ssh在线才能使用

 

参考:vscode + ssh + xming + pyqt / matplotlib / imshow

/**************************************************分割线***************************************************/

前面我属实肤浅了

关于$DISPLAY的详细可以参考这里:Linux DISPLAY 设置

里面详细讲解了DISPLAY参数的运用,就是显示在什么地方

如果想退回到树莓派中显示就执行vim ~/.bashrc 把前面的这一行注释掉即可,然后执行source ~/.bashrc更新一下,但是我不知道我为什么不行(重启了一下就行了)

最后又能在树莓派里面输出图像了。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值