【问题标题】:Python program fails to response non English keyboard input properlyPython程序无法正确响应非英文键盘输入
【发布时间】:2019-07-13 14:34:45
【问题描述】:

我有一个简单的 Python 脚本,可以使用基于 this post 的笔记本电脑相机拍照。

特别是,用户可以通过按 ESC 退出程序。以下是部分脚本

# cv2 is OpenCV module
key = cv2.waitKey(1)

# ESC is pressed
if k % 256 == 27:
    print("ESC is pressed, exit ...")
    break

虽然一切正常。但是当键盘更改为其他输入(例如俄语、中文)时,在视频流式传输时按 any 键(这里,any 表示 A、B、C、...、Z 键)会终止打印出以下错误的程序。

ASSERT: "false" in file qasciikey.cpp, line 501
Abort trap: 6

使用英语/法语/德语键盘时未发现此错误。

如何在我的 Python 脚本中正确处理这个问题?谢谢

【问题讨论】:

  • 如果你谷歌搜索“qasciikey.cpp”你会发现很多线程报告这个错误。您是否尝试过任何可能建议的解决方案?你可以用你尝试过的任何建议来更新你的帖子吗?实际上,OpenCV 并不是一个接口库,最好只使用imshow() 之类的东西作为调试工具,而使用其他库来正确显示和与用户交互。无论哪种方式,都可能会解决此特定问题,因此请随时继续搜索。但请记住。

标签: python keyboard-events


【解决方案1】:

看起来 opencv waitKey 不适用于 unicode 字符。如果您使用 Windows,您可以尝试不同的方法,您可以尝试使用 pywin32 获取字符

import win32api
if win32api.GetAsyncKeyState(0x0000001B): #0x1B 0x001B
    print("ESC is pressed, exit ...")
    break

或者你可以使用数字按钮来打破循环:

if cv2.waitKey(25)==0x30: #digit zero 0x0030 0x00000030
    print("num 0 is pressed, exit ...")
    break

【讨论】:

  • OP 是否指定了 Windows?
猜你喜欢
  • 2023-03-15
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 2014-06-25
  • 2016-02-19
相关资源
最近更新 更多