说白了就是对键盘事件进行delay(ms)的等待(delay=0则为无限等待),若触发则返回该按键的ASSIC码(否则返回-1)
这里我们创建一个全黑窗口,并设置按键功能(‘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()
这里建议,若需要多个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()