Python OpenCV - waitKey(0)没有响应?

Dho*_*rka 21 python opencv ubuntu-12.04

我在ubuntu 12.04上使用opencv 2.4.7.我正在用python编程,当我运行这个脚本时我遇到了问题:

import cv2

img = cv2.imread('347620923614738322_233985812.jpg')
cv2.namedWindow("window")
cv2.imshow("window", img)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

问题是当我关闭图像时脚本不会停止.我搜索了有关的信息waitKey,我发现使用cv2.waitKey(0)是正确的.

我不明白,问题出在哪里?

use*_*581 30

我发现,如果我在窗口聚焦时按下键,它会起作用.如果命令行处于焦点,则没有任何反应

  • 这当然有效......当你从命令行提示符运行程序时 (2认同)

Ten*_*ong 13

在销毁窗口后添加cv2.waitKey(1)应该适用于这种情况.

cv2.imshow('imgae',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey(1)
Run Code Online (Sandbox Code Playgroud)


小智 10

单击图像窗口(活动)然后按 和 键,不要在终端窗口中写入。


小智 8

这段代码适用于IDLE:

# -*- coding: utf-8 -*-

# Objectif : découvrir le fonctionnement d'opencv-python
# http://opencv-python-tutroals.readthedocs.org/en/latest/index.html


import numpy as np
import cv2

# Load an color image in grayscale
img = cv2.imread('Lena.tiff',0)
WINDOW_NAME = 'Image de Lena'
cv2.namedWindow(WINDOW_NAME, cv2.CV_WINDOW_AUTOSIZE)
cv2.startWindowThread()

# Display an image
cv2.imshow(WINDOW_NAME,img)
cv2.waitKey(0) 


cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

希望这有助于未来的读者.

  • 如果您是Mac用户,请遵循Teng Long的回答,并在`cv2.destroyAllWindows()`之后添加`cv2.waitKey(1)`。 (2认同)

Emp*_*yee 7

这是在所有平台上实现最佳性能的简约代码:

import cv2

img = cv2.imread("image.jpg")
cv2.imshow("Window", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

现在一些观察

当用户想要通过按键关闭窗口 时,他/她必须确保在窗口处于焦点状态时按下该键。因为如上所述,如果终端处于焦点状态,则不会发生任何事情,并且代码执行会一直停留在窗口处于焦点状态时正确按下按键为止。0 0cv2.waitKey(0)0

0在窗口处于焦点状态时按下该键是关闭窗口的正确方法,并确保一旦窗口被销毁cv2.destroyAllWindows()并且程序结束,用户可以重新获得终端的控制权

如果通过鼠标点击退出窗口,窗口会被销毁,但是用户很可能会陷入无法拿回终端控制权的情况。在这种情况下,用户可能想要关闭无响应的终端并打开一个新终端。