OpenCV';IPython笔记本中的s waitKey()备选方案
我试图在我的Jupiter笔记本上用cv2.imshow(img)显示cv2库中的图像,它的显示与预期一致,但我无法使用或不知道如何使用cv2.waitKey(0),因此单元格不会停止执行OpenCV';IPython笔记本中的s waitKey()备选方案,python,opencv,ipython-notebook,Python,Opencv,Ipython Notebook,我试图在我的Jupiter笔记本上用cv2.imshow(img)显示cv2库中的图像,它的显示与预期一致,但我无法使用或不知道如何使用cv2.waitKey(0),因此单元格不会停止执行 cv2.waitKey(0)可以在脚本中工作,但不能在笔记本中工作 下面是一个片段: cv2.imshow('Image', img) cv2.waitKey(0) cv2.destroyAllWindows() 如何在不重新启动整个内核的情况下停止执行cell?因此,多亏了@mika,以下是解决方案: 您
cv2.waitKey(0)
可以在脚本中工作,但不能在笔记本中工作
下面是一个片段:
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
如何在不重新启动整个内核的情况下停止执行cell?因此,多亏了@mika,以下是解决方案:
您必须首先编写
cv2.startWindowThread()
,解释如下 我发现来自primoz
的答案非常有用。下面是一个函数的代码,该函数从指定路径读取图像,绘制图像,等待任何输入关闭窗口并返回图像对象
import cv2
def cv2_imshow(path, title):
"""
function:
- reads image from `path`,
- shows image in a separate window,
- waits for any key to close the window.
return: image object
"""
img = cv2.imread(path)
cv2.startWindowThread()
cv2.imshow(title, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
return img
使用图像路径和标题调用函数:
img_raw = cv2_imshow(path = r'img\example\test.png', title = "raw image")
例如
cv2.waitKey(5000)
是否按预期工作,并在5000毫秒后停止执行?@mika,否。如果我输入除0以外的任何数字,它只显示应显示图像的窗口,然后此窗口将变得无响应。根据需要,您必须在GUI之前使用cv2.startWindowThread()
calls@Micka,有趣的是:我以前遇到过这个,并试图使用它,但由于某种原因,它没有工作。现在我又试了一次,成功了。谢谢你让我再试一次!:)@primoz你可能做了我所做的,忘记重新启动内核。在同一个单元中?该链接没有指定。@mLstudent33这没关系,但您应该在调用任何其他cv2
方法之前执行它。这对我不起作用,每次它崩溃内核时,Jupyter笔记本都会显示一个红色死机内核。超级!我已经找了一段时间了。在下面添加了工作代码,让我们合并?;)