OpenCV中多次调用cv2.waitKey引发卡顿、按键响应异常的解决方法
解决OpenCV中多次调用cv2.waitKey导致的按键检测卡顿问题
问题原因
- 每次调用
cv2.waitKey(1)都会从按键事件缓冲区读取一个按键值,同时阻塞程序1毫秒 - 连续三次调用时,第一次调用已消费当前按键事件,后续两次调用大概率无法读取到同一个按键,只有持续按住按键(持续生成事件)时,后续调用才可能捕获到,这就导致需要长按数秒才能触发对应逻辑
- 三次调用的累积阻塞时间也会拖慢程序响应速度
解决方案
只需调用一次cv2.waitKey(1),将返回值存入变量,再通过这个变量判断不同按键:
key = cv2.waitKey(1) if key == 100: # 对应'd'键 show_crop = not show_crop elif key == 99: # 对应'c'键 show_cv = not show_cv elif key == 116: # 对应't'键 show_curr_track = not show_curr_track
效果说明
- 单次读取按键缓冲区,确保每个按键事件被精准捕获,不会因多次调用导致事件丢失
- 仅1毫秒的阻塞不会影响程序流畅度,按键操作会被即时响应
内容的提问来源于stack exchange,提问作者Birinder Singh
相关产品推荐
相关产品推荐

