【问题标题】:cv2.imshow() crashes Kernelcv2.imshow() 使内核崩溃
【发布时间】:2017-10-12 02:30:06
【问题描述】:

我正在通过 Jupyter Notebooks 运行 OpenCV,每当我尝试运行 cv2.imshow() 时,内核都会崩溃,没有错误消息或有用的提示 - 只是简单的

The Kernel appears to have died. It will restart automatically.

这是我正在运行的代码...

import cv2 
input = cv2.imread('images/input.jpg')
cv2.imshow('Hello World', input)
cv2.waitKey(0)
cv2.destroyAllWindows()

当我运行以下代码时,代码可以工作(尽管不同)...

%matplotlib inline
from matplotlib import pyplot as plt
import cv2
image = cv2.imread('images/input.jpg')
plt.imshow(image)
plt.show()

仅供参考,我在 AWS 上使用的是完全未更改的 BitFusion 副本。

https://aws.amazon.com/marketplace/pp/B01EYKBEQ0?ref=cns_srchrow

知道可能出了什么问题吗?

【问题讨论】:

  • P.S.我正在通过在 Windows 7 上运行的 Chrome 访问 JN。
  • Matplotlib 可以渲染成图像,然后可以作为 HTML 笔记本的一部分显示。 OpenCV 便利的 GUI 实用程序纯粹是客户端——imshow 在 GUI 窗口中显示图像,waitKey 泵送消息循环等。在服务器端运行它们没有任何意义。
  • 我遇到了同样的问题。以下答案对我有帮助。 stackoverflow.com/questions/19285562/… 如果仍然崩溃,请确保没有任何语法错误。

标签: python amazon-web-services opencv ipython jupyter


【解决方案1】:

要在 AWS 上查看带有 cv2.imshow 的图像,您需要启用 X11 转发,以便图形可以在服务器上运行并在本地显示。这可以通过使用 -Y 选项的 ssh-ing 来完成:

ssh -Y username@hostname

如果图片较大,还需要使用-C压缩数据:

ssh -Y -C username@hostname

只要您显示笔记本中的图像,用于 ssh 到 AWS 的终端就需要保持打开状态。

【讨论】:

    【解决方案2】:

    我现在无法解释您的代码的行为,但您可以使用以下代码来实现上述行为。

    %matplotlib inline
    from matplotlib import pyplot as plt
    import cv2
    image = cv2.imread('images/input.jpg')
    plt.imshow(image)
    plt.show()
    

    【讨论】:

    • 这不是问题要问的。简历2。 imshow() 不起作用。使用 plt 对问题没有帮助。
    猜你喜欢
    • 2018-03-03
    • 2020-05-25
    • 2013-01-18
    • 2014-09-16
    • 2016-08-14
    • 1970-01-01
    • 2023-03-21
    • 2018-06-16
    • 2016-01-17
    相关资源
    最近更新 更多