<p>由<code>waitKey</code>返回的键代码似乎依赖于平台。
然而,看看钥匙会有什么回报,这可能是很有教育意义的
(顺便说一下,在我的平台上,<em>Esc</em>不会返回27…)</p>
<p>塞阿比德的答案列表中的整数对人类的大脑来说是毫无用处的
(除非你是个天才学者…)。但是,如果你用十六进制检查它们,
或者看看最低有效字节,您可能会注意到模式。。。</p>
<p>我检查<code>waitKey</code>返回值的脚本如下:</p>
<pre><code>#!/usr/bin/env python
import cv2
import sys
cv2.imshow(sys.argv[1], cv2.imread(sys.argv[1]))
res = cv2.waitKey(0)
print('You pressed %d (0x%x), LSB: %d (%s)' % (res, res, res % 256,
repr(chr(res%256)) if res%256 < 128 else '?'))
</code></pre>
<p>您可以将其用作最小的命令行图像查看器。</p>
<p>一些结果,我得到了:</p>
<ul>
<li><p>q字母:</p>
<p>您按了1048689(0x100071),LSB:113('q')</p></li>
<li><p>转义键(传统上,ASCII 27):</p>
<p>您按了1048603(0x10001b),LSB:27('\x1b')</p></li>
<li><p>空间:</p>
<p>您按了1048608(0x100020),LSB:32('')</p></li>
</ul>
<p>当你得到“奇怪”的结果时,不管你怎么看,这个列表都会继续。</p>
<p>顺便说一句,如果你想把它放在一个循环中,你只需要<code>waitKey(0)</code>(永远等待),而不是忽略<code>-1</code>返回值。</p>
<p><strong>编辑(EDIT)</strong>:这些高比特数远远超出了人们的视线-请参阅安德鲁C的答案(提示:这与所有“锁”之类的键盘修饰符有关,例如NumLock)。</p>
<p>然而,我最近的经验表明,有一种平台依赖性——例如,Windows上Python 3.6上Anaconda的OpenCV 4.1.0不会产生这些位,对于某些(重要的)键是从<code>waitKey()</code>返回<code>0</code>(箭头,<kbd>Home</kbd>,<kbd>End</kbd>,<kbd>PageDn</kbd>,<kbd>PageUp</kbd>,甚至<kbd>Del</kbd>和<kbd>Ins</kbd>)。至少<kbd>Backspace</kbd>返回<code>8</code>(但是。。。为什么不<kbd>Del</kbd>?)。</p>
<p>因此,对于一个跨平台的用户界面,您可能被限制在<kbd>W</kbd>,<kbd>a</kbd>,<kbd>S</kbd>,<kbd>D</kbd>,字母,数字,<kbd>Esc</kbd>,<kbd>空格</kbd>和<kbd>退格</kbd>;)</p>