Mah*_*00d 8 python opencv window image
这看起来很简单,但我无法让它工作,也找不到关于这个特定问题的任何问题(如果有,请在评论中指出)。
我正在显示图像并希望窗口在特定键上关闭,但奇怪的是,任何键都会导致它关闭。
这是我用于测试的简单代码:
img = cv2.imread("MyImage.png")
cv2.imshow('My Image', img)
k = cv2.waitKey(0) & 0xFF
print(k)
if k == 27: # close on ESC key
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
(基于这里所说的)
无论我按哪个键,都会显示键代码(ESC 为 27,SPACE 为 32,...)并且窗口关闭。
主要问题:该if
子句永远不会到达(我通过将其放入print(k)
其中进行检查,但没有打印任何内容)。按下按键后,程序只是停止运行,并且不会检查按键代码。
(我使用的是 macOS Catalina,使用 Python 3.8)
那么,我该如何让它等待特定的键呢?
从我的角度来看,您的程序只是终止,因此无论您按哪个键,所有窗口都会隐式关闭。
while True
一种想法可能是围绕读取和检查按下的键设置一个循环:
import cv2
img = cv2.imread('path/to/your/image.png')
cv2.imshow('My Image', img)
while True:
k = cv2.waitKey(0) & 0xFF
print(k)
if k == 27:
cv2.destroyAllWindows()
break
Run Code Online (Sandbox Code Playgroud)
运行它,按一些键,最后ESC,我得到以下输出:
103
100
102
27
Run Code Online (Sandbox Code Playgroud)
此外,所有窗口均关闭,程序终止。
----------------------------------------
System information
----------------------------------------
Platform: Windows-10-10.0.16299-SP0
Python: 3.8.5
OpenCV: 4.4.0
----------------------------------------
Run Code Online (Sandbox Code Playgroud)