OpenCV在IPython Notebook中的waitKey()替代方案

时间:2015-09-30 08:30:29

标签: python opencv ipython-notebook

我正在尝试使用cv2.imshow(img)在我的Jupiter Notebook中显示带有cv2库的图像,它显示为预期,但我不能使用或不知道如何使用cv2.waitKey(0),因此单元格不会停止执行。

cv2.waitKey(0)适用于脚本,但不适用于Notebook。

这是一个片段:

cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

如何在不重新启动整个内核的情况下停止执行单元格?

2 个答案:

答案 0 :(得分:8)

所以,感谢@Micka,这是解决方案:

您必须先写cv2.startWindowThread(),解释here

答案 1 :(得分:0)

我发现来自 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")