我无法理解以下代码段-
if cv2.waitKey(0) & 0xFF == ord('q'):
break
Run Code Online (Sandbox Code Playgroud)
在此代码中-
1 import numpy as np
2 import cv2
3
4 cap = cv2.VideoCapture(0)
5
6 while(True):
7 # Capture frame-by-frame
8 ret, frame = cap.read()
9
10 # Our operations on the frame come here
11 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
12
13 # Display the resulting frame
14 cv2.imshow('frame',gray)
15 if cv2.waitKey(1) & 0xFF == ord('q'):
16 break
17
18 # When everything done, release the capture
19 cap.release()
20 cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
ord('q')和0xFF是什么意思?在这里如何使用?
ord('q')
返回q的Unicode代码点cv2.waitkey(1)
返回与按下的键相对应的32位整数& 0xFF
是一个位掩码,它将左24位设置为零,因为它ord()
返回一个介于0和255之间的值,因为您的键盘只有一个有限的字符集首先,cv2.waitKey(1) & 0xFF
将被执行。
waitKey
返回值为 113。在二进制中,表示为0b01110001。DECIMAL VALUE
AND
使用两个输入0b01110001和 0xFF ( 0b11111111 ) 执行运算符。0b01110001 AND
0b11111111 = 0b01110001。确切的结果DECIMAL VALUE
是q
其次,将左表达式0b01110001的值与进行比较ord('q')
。显然,这些值与另一个值相同。最终结果是break
被调用。