opencv cv2.destroyAllWindows() 无法响应

0 投票
2 回答
2775 浏览
提问于 2025-04-18 00:07

我有一个64位的Ubuntu系统,正在IDLE里运行代码。最近遇到了OpenCV卡住的问题,图像虽然显示出来了,但我必须强制关闭这个图像窗口。于是我参考了这个帖子—— 使用OpenCV的waitKey()函数的其他按键

import cv2
img = cv2.imread('sof.jpg') # load a dummy image
while(1):
    cv2.imshow('img',img)
    k = cv2.waitKey(3000) & 0xff
    if k==32:    # SpaceBar key to stop
        break
    elif k==-1:  # normally -1 returned,so don't print it
        continue
    else:
        print k # else print its value

但是还是不行,图像又卡住了,我只能手动关闭它。

2 个回答

0

在代码中加上 cv2.waitKey(0) 和 cv2.destroyAllWindows(),但是如果你在 Unix 系统上用 Python 笔记本运行 OpenCV 程序,会遇到一个问题。这会导致系统卡死,所以每次执行代码时你都需要重启内核。

我有一个替代的方法,可以防止你的系统卡死。

步骤:

  1. - 从 Python 笔记本复制代码,创建一个新的文件名为 filename.py,然后粘贴代码进去。
    • 打开终端
    • 输入 cd path/to/file(这里的 path/to/file 是你文件的路径)
    • 输入 source activate VirtualEnvironment(这里是激活你的虚拟环境)
    • 输入 python filename.py(运行你的 Python 文件)

这样就可以直接从终端运行代码了。希望这对你有帮助。

示例链接: https://youtu.be/8O-FW4Wm10s

0

尝试一下:

k = cv2.waitKey(3000) & 0xff

撰写回答