Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV';IPython笔记本中的s waitKey()备选方案_Python_Opencv_Ipython Notebook - Fatal编程技术网

OpenCV';IPython笔记本中的s waitKey()备选方案

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,以下是解决方案: 您

我试图在我的Jupiter笔记本上用cv2.imshow(img)显示cv2库中的图像,它的显示与预期一致,但我无法使用或不知道如何使用cv2.waitKey(0),因此单元格不会停止执行

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笔记本都会显示一个红色死机内核。超级!我已经找了一段时间了。在下面添加了工作代码,让我们合并?;)