键盘按键检测

键盘按键检测

if cv2.waitkey(20)&0xFF==27:
等待20ms,期间按下某键则返回按键值的ascall码。
&0xFF是一种防止异常的机制。
esc退出按键的ascall码为27

写的比较好的博文

cv2.waitKey(delay)参数:

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

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

cv2.waitKey(delay)返回值:

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

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

# 若按下esc键,则关闭摄像头
    def key_handler(self):
        """
        cv2 window must be focused for keypresses to be detected.
        """
        self.pressed = waitKey(10) & 255  # wait for keypress for 10 ms
        if self.pressed == 27:  # exit program on 'esc'
            print("[INFO] Exiting")
            self.webcam.stop()
            sys.exit()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
矩阵键盘按键松手检测的实现方法通常是通过轮询扫描矩阵键盘的每一个按键状态,并记录每一个按键的按下和松开状态。当某个按键被按下时,将其状态设置为按下,并记录下按键的编号。当某个按键松开时,将其状态设置为松开,并检查是否与之前记录的按键编号相同。如果相同,则说明该按键被松开了,并可以进行相应的后续处理,如触发相应的事件或发送按键值到上位机等。 具体实现方法可以参考以下代码示例(假设使用的是4x4的矩阵键盘): ```c #define ROWS 4 #define COLS 4 // 记录每一个按键的按下和松开状态 unsigned char key_states[ROWS][COLS]; // 扫描矩阵键盘并记录按键状态 void scan_keyboard() { for (int row = 0; row < ROWS; row++) { // 设置当前行为输出模式 set_row_output(row); for (int col = 0; col < COLS; col++) { // 读取当前列的状态 unsigned char key_state = read_col_state(col); if (key_state == KEY_DOWN) { // 如果按键被按下,则记录按下状态和按键编号 key_states[row][col] = KEY_DOWN; } else if (key_state == KEY_UP && key_states[row][col] == KEY_DOWN) { // 如果按键被松开且之前的状态为按下,则记录松开状态并触发相应事件 key_states[row][col] = KEY_UP; handle_key_release(row, col); } } // 恢复当前行为输入模式 set_row_input(row); } } ``` 其中,`set_row_output()` 和 `set_row_input()` 分别用于设置当前行为输出模式和输入模式,具体实现方法可以根据不同的硬件平台进行调整。`read_col_state()` 用于读取当前列的状态,返回值为 `KEY_UP` 或 `KEY_DOWN`,表示按键是否被按下。`handle_key_release()` 则为按键松开事件处理函数,可以根据需要进行相应的处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶叶梓梓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值