Python: cv2.waitKey([delay]) → retval
Parameters:
delay – Delay in milliseconds. 0 is the special value that means “forever”.
The function waitKey waits for a key event infinitely (when delay <= 0 ) or for delay milliseconds, when it is positive.
It returns the code of the pressed key or -1 if no key was pressed before the specified time had elapsed.
Note! The function only works if there is at least one HighGUI window created and the window is active. If there are several HighGUI windows, any of them can be active.
import cv2
def test():
lena = cv2.imread('lena.jpg')
cv2.imshow('image', lena)
cv2.waitKey(0)
print "I'm done"
if __name__ == '__main__':
test()
图片显示着,直到你按下任意一个键,才被关掉,打印出I'm done
。
import cv2
def test():
lena = cv2.imread('lena.jpg')
cv2.imshow('image', lena)
keycode = cv2.waitKey(1000)
print keycode
print "I'm done"
if __name__ == '__main__':
test()
结果图片只显示1秒,如果此期间你按下一个键,比如键a
,那么将打印出
97
I'm done
如果在图片显示时,不按键,则将打印出
-1
I'm done
import cv2
def test():
lena = cv2.imread('lena.jpg')
while True:
cv2.imshow('image', lena)
if cv2.waitKey(1) & 0xFF == ord('q'):
print "I'm done"
break;
if __name__ == '__main__':
test()
运行代码,会显示一张图片,当你按下q
键时,显示图片的窗口被关掉,并打印出I'm done
,结束程序。
关于为什么要有
0xFF
:
On some systems, waitKey() may return a value that encodes more than just the ASCII keycode.
On all systems, we can ensure that we extract just the ASCII keycode by reading the last byte from the return value like this:
keycode = cv2.waitKey(1)
if keycode != -1:
keycode &= 0xFF