谁能告诉我为什么下面的代码使用 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。