Opencv 中 waitkey()& 0xFF,“0xFF”的作用解释

Opencv 中 waitkey()& 0xFF,“0xFF”的作用解释这几日学习OpenCV,刚碰到这个表达式时,对于0xFF的作用不太理解,难道下面两个语句还有区别?(Esc的ASCII码为27,即判断是否按下esc键)ifcv2.waitkey(30)==27ifcv2.waitkey(30)&0xff==27疑惑首先&运算即“and”运算。其次0xFF是16进制数,对应的二进制数为11111111。然后cv2….

大家好,又见面了,我是你们的朋友全栈君。

这几日学习OpenCV,刚碰到这个表达式时,对于0xFF的作用不太理解,难道下面两个语句还有区别?(Esc的ASCII码为27,即判断是否按下esc键)

if cv2.waitkey(30)==27
if cv2.waitkey(30)&0xff==27

疑惑

首先&运算即“and”运算。

其次0xFF是16进制数,对应的二进制数为1111 1111。

然后cv2.waitkey(delay)函数

1.若参数delay≤0:表示一直等待按键;

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

cv2.waitKey(delay)返回值:

1、等待期间有按键:返回按键的ASCII码(比如:Esc的ASCII码为27,即0001  1011);

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

我们知道,当按下按键时,waitkey函数的输入值一定是一个正整数。任何一个正整数,与1111 1111做&运算,其结果必然是他本身(因为正数的补码等于原码),例

0001 1011

1111  1111

&运算结果为:0001 1011

那么这个&0xff到底有什么用呢?

解释

查阅资料我才知道,原来系统中按键对应的ASCII码值并不一定仅仅只有8位,同一按键对应的ASCII并不一定相同(但是后8位一定相同)

为什么会有这个差别?是系统为了区别不同情况下的同一按键。

比如说“q”这个按键

当小键盘数字键“NumLock”激活时,“q”对应的ASCII值为100000000000001100011

而其他情况下,对应的ASCII值为01100011

相信你也注意到了,它们的后8位相同,其他按键也是如此。

为了避免这种情况,引用&0xff,正是为了只取按键对应的ASCII值后8位来排除不同按键的干扰进行判断按键是什么。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150795.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • pycharm与anaconda_python关系抽取

    pycharm与anaconda_python关系抽取1、Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。虽然Python3.5自带了一个解释器IDLE用来执行.py脚本,但是却不利于我们书写调试大量的代码。常见的是用Notepade++写完脚本,再用idle来执行,但却不便于调试。这时候就出现了PyCharm等IDE,来帮助我们调试开发。2、PyCharm是一种PythonIDE,带有一整套可以帮助用户在使用P…

  • docker搭建kafka集群

    docker搭建kafka集群docker搭建kafka集群我在M1mbp上使用的以下镜像新建文件zk-kafka-docker-compose.ymlversion:”2″services:zookeeper:user:rootimage:docker.io/zookeeperports:-“12181:2181″environment:-ALLOW_ANONYMOUS_LOGIN=yesvolumes:-zoo

  • Python 自定义包的导入问题 和 打包成exe无法在别的电脑运行的问题

    Python 自定义包的导入问题 和 打包成exe无法在别的电脑运行的问题

    2021年11月23日
  • Ubuntu安装微信,三步到位[通俗易懂]

    Ubuntu安装微信,三步到位[通俗易懂]Ubuntu安装微信

    2022年10月25日
  • eclipse使用maven教程

    eclipse使用maven教程eclipse使用maven教程什么是mavenmaven下载与安装与配置1下载2安装3配置环境变量在eclipse中配置1m2eclipse安装2配置eclipse3创建一个maven项目1项目的结构2Eclipse中maven常用的命3使用maven命令0.什么是maven参考https://www.cnblogs.com/whgk/p

  • ABA问题_乐观锁aba引发的实际问题

    ABA问题_乐观锁aba引发的实际问题ABA问题一.概述:二.什么是ABA问题?三.ABA问题的解决:原子引用:(存在ABA问题)带版本号的原子引用(解决ABA问题)一.概述:ABA问题是在多线程并发的情况下,发生的一种现象。上一次记录了有关CAS操作的一些知识,CAS通过比较内存中的一个数据是否是预期值,如果是就将它修改成新值,如果不是则进行自旋,重复比较的操作,直到某一刻内存值等于预期值再进行修改。而ABA问题则是在CAS操作中存在的一个经典问题,这个问题某些时候不会带来任何影响,某些时候却是影响很大的。二.什么是ABA问题?理解一

    2022年10月23日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号