imshow将导致jupyter笔记本崩溃

2024-06-12 14:59:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我在google或stackoverflow上查看其他问题,他们正在讨论脚本中运行cv2.imshow,但我的代码运行在jupyter笔记本中。

这是我的配置:

  1. ubuntu 16.4x64

  2. python 3.5版

  3. opencv 3.1.0

我开始做一个笔记本:这是我放在笔记本上的代码:

%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关闭此窗口,稍后,系统将提示我窗口没有响应,它将给我两个选择:“等待”,“提前退出”。如果我点击wait,那么它稍后会显示相同的提示,如果我点击fore quit,那么jupyter笔记本内核就会死掉,我必须重新开始。

我到处搜索,很多解决方案建议我应该添加这个代码

cv2.startWindowThread()

imshow之前,但情况变得更糟,内核将永远挂起!。 任何人都知道发生了什么。

这是我错误的照片: enter image description here


Tags: 代码脚本ubuntugoogle笔记本jupyterstackoverflowcv2
3条回答
%matplotlib inline
#The line above is necesary to show Matplotlib's plots inside a Jupyter Notebook

import cv2
from matplotlib import pyplot as plt

#Import image
image = cv2.imread("input_path")

#Show the image with matplotlib
plt.imshow(image)
plt.show()

我也遇到了类似的问题,但在Jupyter笔记本中使用cv2.imshow()无法找到一个好的解决方案。我跟随this stackoverflow answer,只是使用matplotlib来显示图像。

import matplotlib.pyplot as plt
# load image using cv2....and do processing.
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
# as opencv loads in BGR format by default, we want to show it in RGB.
plt.show()

很简单。你需要了解发生了什么。

import cv2
cvim2disp = cv2.imread('data/home.jpg')
cv2.imshow('HelloWorld', cvim2disp)
cv2.waitKey(0) 
cv2.destroyWindow('HelloWorld')

waitKey(0)方法无限等待输入。当您看到相应图像的帧时,不要尝试使用右上角的“关闭”关闭图像。

而是按一些键。waitkey方法将把它作为输入,并返回一个值。此外,您还可以检查按了哪个键来关闭框架。

此外,waitKey(33)将使帧保持活动状态33毫秒,然后自动关闭它。

destroyWindow()会破坏当前帧。 destroyAllWindows()将销毁当前存在的所有帧。

这会解决的。

相关问题 更多 >