opencv-python:cv2.waitKey()使用注意

1. waitKey函数功能

说白了就是对键盘事件进行delay(ms)的等待(delay=0则为无限等待),若触发则返回该按键的ASSIC码(否则返回-1)
opencv-python:cv2.waitKey()使用注意_第1张图片

2. 使用范例

这里我们创建一个全黑窗口,并设置按键功能(‘m’,‘n’则打印数字,'q’则退出)
PS:ord()函数——Return the Unicode code point for a one-character string.

import cv2

i = 1
while True:
    cv2.imshow('tmp', np.zeros(shape=(1000, 1000, 3), dtype=np.uint8))
    key = cv2.waitKey(1)
    if key == ord('m'):
        print(i)
        i += 1
    if key == ord('n'):
        print(i)
        i += 1
    if key == ord('q'):
        break
cv2.destroyAllWindows()

3. 使用注意

这里建议,若需要多个waitKey()的判断语句(比如上面程序需要3个判断),那么先将cv2.waitKey()赋值给一个变量,再用该变量去判断;比如下面这段反面示例,每个判断语句都调用一次cv2.waitKey(),则容易造成资源浪费,若电脑性能不够,则会造成按键不灵敏的问题(可能按下’n’但是没有反应)。

import cv2

i = 1
img = np.zeros(shape=(1000, 1000, 3), dtype=np.uint8)
while True:
    cv2.imshow('img', img)
    if cv2.waitKey(1) == ord('m'):
        print(i)
        i += 1
    if cv2.waitKey(1) == ord('n'):
        print(i)
        i += 1
    if cv2.waitKey(1) == ord('q'):
        break
cv2.destroyAllWindows()

你可能感兴趣的:(Opencv,python)