if cv2.waitKey(25) & 0xFF == ord(‘q‘): break的解释

 if cv2.waitKey(25) & 0xFF == ord('q'):          #按‘q’退出
        break

cv2.waitKey(delay)参数:

1、delay≤0:一直等待按键;

2、delay取正整数:等待按键的时间,比如cv2.waitKey(25),就是等待25(milliseconds);(视频中一帧数据显示(停留)的时间)

cv2.waitKey(delay)返回值:

1、等待期间有按键:返回按键的ASCII码(比如:q的ASCII码为113);

2、等待期间没有按键:返回 -1;

-1&0xFF:

-1 的原码:  1000 0001
-1 的反码:  1111 1110
-1 的补码:  1111 1111
0xFF():1111 1111
按为取&后:  1111 1111 = 255

对于原码、补码和反码的理解可以参考:
计算机中整数为什么以「补码」的形式存储?
计算机原码,反码,补码
至于为什么要&0xFF:
可能是为了确保取低八位
有人说是:

为何做掩码运算是因为已经发现在Linux中的某些情况下(when OpenCV uses GTK as its backend GUI),waitKey()可能返回超过ASCII的keycode,所以这是为了防止在某些情况下产生bug。

在所有系统中,可以通过读取返回值的最后一个字节来保证只读取ASCII码,即与0xFF做与运算,即可保证获得ASCII码

ord(‘q’):
返回q的ASCII值

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值