我在谷歌或者stackoverflow上查看了其他的问题,他们都是关于如何在脚本中运行cv2.imshow函数的,但我的代码是在jupyter notebook上运行的。
以下是我的配置:
ubuntu 16.4x64
python 3.5
opencv 3.1.0
我在jupyter notebook上运行了如下代码:
%pylab notebook
import cv2
cvim2disp = cv2.imread('data/home.jpg')
cv2.imshow('HelloWorld', cvim2disp)
cv2.waitKey() #image will not show until this is called
cv2.destroyWindow('HelloWorld') #make sure window closes cleanly
当我执行这些代码时,图片将在弹出窗口中显示,但我无法通过点击右上角的x关闭此窗口,过了一会儿,系统会提示我该窗口未响应,它将给我两个选择:“等待”和“强制退出”。如果我选择等待,那么稍后将会显示相同的提示。如果我选择“强制退出”,则Jupyter笔记本内核会死机,我必须重新开始。我在谷歌上查找,许多解决方案建议我添加这段代码。
cv2.startWindowThread()
在imshow
之前出现问题,但情况变得更糟了,内核永远挂起!有人知道发生了什么。
cv.imshow
并没有实际意义。你需要找到一种方法在笔记本的页面上显示图像(在客户端),而不是在服务器端运行GUI窗口——当客户端和服务器在同一台机器上时,这种做法可能有些“奏效”,但只限于此。| 你已经使用了matplotlib的imshow
函数(不是你认为的numpy),因此建议继续使用它(请注意,该函数使用RGB而不是BGR颜色平面顺序)。 - Dan Mašek