によって返されるキーコードは、waitKey
プラットフォームに依存しているようです。ただし、キーが何を返すかを確認することは非常に教育的かもしれません(ちなみに、私のプラットフォームでは、Escは27を返しません...)
アビッドの回答リストの整数は、人間の心にはほとんど役に立たない(あなたが天才のサバンでない限り...)。ただし、それらを16進数で調べたり、最下位バイトを調べたりすると、パターンに気付く場合があります...
からの戻り値を調べるための私のスクリプトwaitKey
は以下のとおりです。
#!/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 '?'))
最小限のコマンドライン画像ビューアとして使用できます。
私が得たいくつかの結果:
qレター:
1048689(0x100071)、LSB:113('q')を押しました
エスケープキー(従来はASCII 27):
1048603(0x10001b)、LSB:27('\ x1b')を押しました
スペース:
1048608(0x100020)、LSB:32('')を押しました
このリストは続く可能性がありますが、「奇妙な」結果が得られた場合は、その方法がわかります。
ところで、ループに入れたい場合は、戻り値waitKey(0)
を無視する代わりに、(永遠に待つ)ことができます。-1
編集:これらの上位ビットには、目に見える以上のものがあります-Andrew Cの回答を参照してください(ヒント:すべての「ロック」(NumLockなど)のようなキーボード修飾子と関係があります)。
ただし、最近の経験では、プラットフォームに依存していることが示されています。たとえば、Windows上のPython3.6上のAnacondaのOpenCV4.1.0はこれらのビットを生成せず、一部の(重要な)キーは(0
矢印waitKey()
、、、、、、および)。少なくとも戻ります(しかし...なぜそうではありませんか?)。HomeEndPageDnPageUpDelInsBackspace8
Del
したがって、クロスプラットフォームUIの場合、おそらく、、、、、文字W、数字、、、Aおよび; )に制限されます。SDEscSpaceBackspace