OpenCV 中 cv2.waitKey() 的含义


cv2.waitKey(time_ms) : 表示阻塞等待 n 毫秒,在等待过程中,若按下某键,则停止等待,继续运行,且返回该键值的 ASCII 码。

  • code 1
1
2
3
4
5
def test():
lena = cv2.imread('1.jpg')
cv2.imshow('image', lena)
cv2.waitKey(0)
print "I'm done"

程序不加阻塞的直接执行

  • code 2
1
2
3
4
5
6
def test():
lena = cv2.imread('1.jpg')
cv2.imshow('image', lena)
keycode = cv2.waitKey(1000)
print keycode
print "I'm done"

程序运行到第 4 行,等待 1 s 后打印输出

1
2
-1
I'm done

若执行过程中你按下了某个键,则会立刻输出:

1
2
97
I'm done

这里的 97 是你按下的键值对应的 ASCII 码

  • code 3
1
2
3
4
5
6
7
8
9
10
11
12
13
def test():
cap = cv2.VideoCapture(0)
i = 0
while True:
ret, image_np = cap.read()
cv2.imshow('object detection', image_np)
keyCode = cv2.waitKey(1000)
if keyCode & 0xFF == ord('q'):
print('destroy!')
cv2.destroyAllWindows()
break
i += 1
print('run: ', i)

此程序执行后,会打开摄像头,直到按下 q 键时,程序才停止。且摄像头读取的周期为 1s

keyCode & 0xFF 的作用这里是取 keyCode 的低八位。