我想要某种封锁,直到某个特定的热键被按下。我对诸如input('按Enter键继续')之类的东西很满意,除了事实是这要求我的屏幕显示在终端页面上,我希望在我将注意力集中在另一个窗口时拿起我的按键。>
路易斯·何塞(Luis Jose)从此处提出的解决方案似乎很有效,因为我已经在使用opencv进行了smoethign其他操作,因此将其导入了:How to kill a while loop with a keystroke?但是,运行代码对我没有任何帮助,并且无法理解事实。我按了“ a”,然后一直停留到他永远循环。
import cv2
while (1):
k=0xFF & cv2.waitKey(1)
if k == ord('a'):
break
答案 0 :(得分:2)
上面的代码将不起作用,因为cv2.waitKey旨在在使用cv2.imshow创建显示窗口并且您要停止显示时起作用。这是有道理的,因为opencv被设计为图像和视频处理工具箱。您可以尝试使用pynput软件包。
from pynput import keyboard
def on_press(key):
try:
print('alphanumeric key {0} pressed'.format(
key.char))
except AttributeError:
print('special key {0} pressed'.format(
key))
def on_release(key):
print('{0} released'.format(
key))
if key == keyboard.Key.esc:
# Stop listener
return False
# Collect events until released
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
当您按esc键时,以上代码将终止。 有关该软件包的更多详细信息,请访问:pynput project page