谁能告诉我为什么下面的代码使用 waitKey(20) 以及这个 0xFF == ord('q') 是什么意思?
Can anyone tell me why the code below used waitKey(20) and what does this 0xFF == ord('q') mean?
if cv2.waitKey(20) & 0xFF == ord('q'):
这个cv2.waitKey(20) & 0xFF
是什么意思?
waitKey() 函数等待指定的毫秒数,然后 returns 按下的键的代码,如果没有按下任何键则为 -1。
为了更好地理解表达式,让我们添加一些括号:
if (cv2.waitKey(20) & 0xFF) == ord('q')
&
是一个bitwise and operator,这里用来掩码只得到最低的八位(因为0xFF
在二进制中等于1111 1111
) . waitKey()
returns 一个 int
通常是 32 位或 64 位整数,具体取决于体系结构。所以任何“多余”的位都被按位与“消除”了。 ord()
函数 应该是 (!) returns 它的参数的序数值,i。 e.该示例中 'q'
的 ASCII 代码。
换句话说:它等待按键按下20毫秒,并检查按下的键是否是Q。
if cv2.waitKey(20) & 0xFF == ord('q'):
这个cv2.waitKey(20) & 0xFF
是什么意思?
waitKey() 函数等待指定的毫秒数,然后 returns 按下的键的代码,如果没有按下任何键则为 -1。
为了更好地理解表达式,让我们添加一些括号:
if (cv2.waitKey(20) & 0xFF) == ord('q')
&
是一个bitwise and operator,这里用来掩码只得到最低的八位(因为0xFF
在二进制中等于1111 1111
) . waitKey()
returns 一个 int
通常是 32 位或 64 位整数,具体取决于体系结构。所以任何“多余”的位都被按位与“消除”了。 ord()
函数 应该是 (!) returns 它的参数的序数值,i。 e.该示例中 'q'
的 ASCII 代码。
换句话说:它等待按键按下20毫秒,并检查按下的键是否是Q。