如何使用OpenCV打开远程jupyter笔记本上的图像?

hsgswve4  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(138)

我有两台电脑都运行Windows 10:

  • 计算机1运行着anaconda prompt,运行着jupyter notebook作为命令行示例。它作为一个“服务器”示例工作。
  • 2号电脑的jupyter notebook运行在网络浏览器中。

这些都是通过SSH隧道与PuTTY连接的。现在我正在通过计算机2运行此代码,但OpenCV打开计算机1上的图像。我如何才能让图像在计算机1上打开?
示例代码(修改自here):

import cv2, numpy as np, random

image = np.zeros((224,224,3))
w, h = image.shape[1], image.shape[0]
image_to_show = np.copy(image)

def rand_pt():
 return (random.randrange(w),
 random.randrange(h))

finish = False
while not finish:
    cv2.imshow("result", image_to_show)
    key = cv2.waitKey(0)
    if key == ord('p'):
        for pt in [rand_pt() for _ in range(10)]:
            cv2.circle(image_to_show, pt, 3, (255, 0, 0), -1)
    elif key == 27:
        #if ESC then finish
        finish = True
cv2.destroyAllWindows()
cwxwcias

cwxwcias1#

假设这两台计算机在同一个网络上,你可以通过一个完整的网络路径访问这个文件(我在这个例子中使用了.txt,但是图像应该是一样的)。

file = '//network/path/to/file.txt'
f = open(file, "r")
print(f.read())

如果计算机不在同一网络上,您可以选择以下选项:

  • 将计算机1转换为Web服务器
  • 在计算机之间的连接上使用代理/订阅者或类似类型
  • 将两台计算机置于同一vpn中,从而模拟“同一网络”方案

请注意,这些替代方案将需要相当多的devops工作,并且与本地阅读图像相比,速度会有非常明显的下降。
如果您要打开一个大数据集或处理大图像,请考虑在计算机2中保留图像的单独副本。否则,在运行模型时会产生巨大的开销

cbjzeqam

cbjzeqam2#

在计算机上打开jupyter notebook,然后使用Pillow在屏幕上显示图像。这需要远程连接Jupyter,方法如下:https://gist.github.com/wklchris/6e7fac67d8a22a348f3e6b6c75c0836e将jupyter连接到ssh服务器后,只需将cv2图像转换为pillow,然后显示它:

img = cv2.imread("path/to/img.png")

# You may need to convert the color.
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
im_pil = Image.fromarray(img)
im_pil.show()

相关问题