如何在远程Jupyter Notebook执行中使用opencv?

时间:2019-03-19 00:22:40

标签: python opencv jupyter-notebook jupyter

在装有macOS Mojave的本地计算机中,我安装了具有Python 3.6,opencv软件包和一些其他不相关软件包的虚拟环境。

我启动了一个非常简单的Jupyter Notebook,它执行起来没有问题,这是代码:

import cv2
print(cv2.__version__)
my_img = cv2.imread("colibri_763_460.jpeg",1)
cv2.imshow("Original", my_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

现在,我正在尝试在远程Ubuntu计算机上的Jupyter Notebook中执行相同的代码,但无法使其正常工作。这些是我采取的步骤:

  • 我将图像文件和Notebook ypnb文件复制到了远程ubuntu机器上。
  • 我打开了一个ssh会话,选择了一个与本地计算机具有相同软件包的virtualenv并执行了“ jupyter笔记本”
  • 我使用ssh -L 8000:localhost:8888 mpastorg @ mpgubu18打开了另一个终端,用于ssh隧道
  • 我在localhost:8000中打开了本地浏览器,以执行远程Ubuntu计算机中的笔记本,它可与任何不涉及opencv的笔记本一起使用。

我试图用两种不同的方式解决我的问题:

  • 在ubuntu远程计算机中安装opencv-contrib-python-headless软件包:当我尝试使用 cv2.imshow 时,找不到错误方法
  • 在ubuntu远程计算机中安装软件包opencv-contrib-python:我得到内核已死的错误。

有人知道是否有办法执行远程jupyter笔记本并在本地查看图片吗?也许可以将图片嵌入浏览器窗口中吗?

非常感谢 马科斯·牧师

1 个答案:

答案 0 :(得分:0)

我想知道是否在主机和ssh隧道中都使用X渲染了图像-您尚未明确启用它。

在主机上。 (要查看图像的位置)。 输入此评论

xhost+

这现在允许远程X主机向您发送数据。在Mac上,您需要安装 XQuartz 软件包。

现在修改您的ssh命令。 -允许使用X-通常使用-X标志(也可以将其放置在.ssh / config文件中,如下所示

Host *
  ForwardX11 yes
  ForwardX11Trusted no
  XAuthLocation /opt/X11/bin/xauth
  ForwardAgent yes
  Compression yes
  KeepAlive yes
  Compression yes

如果您不使用配置,请尝试-X开头。

希望有帮助