【问题标题】:Python Opencv2 imshow is closing immediately even with waitKey(0)即使使用 waitKey(0),Python Opencv2 imshow 也会立即关闭
【发布时间】:2021-09-29 15:13:35
【问题描述】:

我使用 wsl2 和 VScode 作为编辑器。有问题的代码很简单:

image = cv2.imread('sample.png')
cv2.imshow('image', image)
cv2.waitKey(0)

第一次运行很顺利,让我检查图像,直到我按下按钮。然而,在第一次运行后,图片显示了四分之一秒,然后消失了。知道是什么原因造成的吗?

【问题讨论】:

  • 这需要更多的调试细节。就目前而言,这是无法复制的。
  • 我真的不知道如何提供更多细节。所有必需的库都已安装等:/
  • 打开一个 powershell 或 cmd 终端,或者处理 WSL2 所需的任何东西,如果您的 python 和 opencv 安装在来宾操作系统中(它们可以在 Windows 上完全正常运行,所以你根本不应该涉及 WSL2)。尝试在 vscode 之外复制问题。 准确地描述你的工作。
  • 嗯...似乎使用 powershell 运行脚本解决了这个问题。我使用的是 virtualenv 所以基本上我所要做的就是激活它并为 windows 安装 Tesseract 并添加:@ 987654322@ 到脚本。之后从powershell运行它就可以了。但是我仍然想知道是什么导致了这个问题,因为我已经尝试了 vscode 的终端和 wsl2 bash 来尝试运行脚本。无论如何谢谢,这会让我现在继续前进!

标签: python opencv visual-studio-code


【解决方案1】:

但是在第一次运行后,图片会显示四分之一秒然后消失。

这似乎是第一次运行时触发的问题。是不是您需要在代码末尾添加cv2.destroyAllWindows()

import cv2

image = cv2.imread('sample.png')
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

【讨论】:

  • 感谢您的建议,我已经尝试过了,但没有帮助.. :(
  • @skudev 太糟糕了:(你以前用过 cv2.imwrite() 方法吗?
  • 不,我不认为我有.. 我对使用 opencv 还是很陌生
  • @skudev 好吧,如果一切都失败了,你仍然可以通过cv2.imwrite("temp.png", img)查看图像。
  • 哦,哎呀.. 是的,我之前使用过 imwrite,只是没想到我会在开发中这么快就使用它,因为我通常会用它来打印最终结果,但是是的,你'是的,这是一种方法!谢谢,让它与 powershell 一起工作,但如果这对我作为 bash 用户来说太笨拙了,我肯定会使用你的建议!
【解决方案2】:

我不知道问题所在,但解决方法对我有用。

我不按任何键来关闭 OpenCV 窗口。我使用 VSCode 终端中的 ?️ 按钮终止了终端。

请考虑一下,如果您按任意键关闭 OpenCV 窗口 1 次,那么您必须重新启动 WSL。因此,从一开始,只需终止终端,而不是按任何键。

但这只是临时解决方法。我希望其他人可以帮助找到根本原因。

【讨论】:

    猜你喜欢
    • 2011-10-11
    • 2014-12-03
    • 2020-12-07
    • 2022-11-21
    • 2019-03-20
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多