Mac下使用vscode远程到服务器时解决opencv显示图像的问题

问题背景

当你使用vscode远程到服务器进行开发的时候,想要显示图像会出现报错,时因为服务器没有GUI支持,不能直接显示图像。我在使用Mac的时候遇到了这个问题,给出解决的方案,搭建相关环境。

X11 Forwarding

  1. 在mac下安装X11,通过X11 forwarding转发来显示图像。链接:https://www.xquartz.org/
  2. 打开XQuartz,然后在Preferences(设置) -> Security选项中勾选“Allow connections from network clients”。
  3. 重启电脑

VSCode上配置

  1. 使用command + shift + P :打开emote-ssh: open configuration file
  2. 添加一行 ForwardX11 yes
  3. service ssh restart 重启服务器

一般来说,这样就可以了,使用xeyes测试一下,看是否成功。我在使用opencv显示的时候还遇到了其它问题:

  1. 报了一个GTK的错误,因为要使用GTK作为后端显示图像,需要下载配置
sudo apt-get install libgtk2.0-dev libgtk-3-dev
安装后,进入你下载的opencv文件夹,进入build文件重新编译:
cd /your_opencv_dir/opencv/build
cmake
make -j 
sudo make install
  1. 出现了Invalid MIT-MAGIC-COOKIE-1 keyError: Can’t open display: localhost:10.0,属于X11转发权限的问题:
    mac打开终端输入 xauth list,选择 your-mac-name/unix:0 MIT-MAGIC-COOKIE-1 some-long-hex-number。
    然后再ssh -X 到服务器,在服务器上添加这个cookie
    xauth add your-mac-name/unix:0 MIT-MAGIC-COOKIE-1 the-long-hex-number-from-previous-step
    再断开ssh,重新使用-X连接,尝试xeyes。

  2. 如果很多方法都不行,可以查看一下端口号。 echo $DISPLAY,有时候可能因为你的神奇操作会让端口号错误,甚至可以换一个端口号试试(啥方法都不中用的情况下)
    your-mac-name/unix:0 MIT-MAGIC-COOKIE-1 some-long-hex-number

你可能感兴趣的:(macos,vscode,opencv)