我仍然是编程的初学者,如果这个问题太微不足道了,请跟我说。假设我有这段代码:
camera = cv2.VideoCapture('path_to_video_file')
while True:
#reading frames of video
ret, frame = camera.read()
cv2.imshow("Video", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
因此,根据我的理解,在显示帧的情况下(在“视频”窗口中),如果同时按下q
键,则循环将中断。但我真的不明白if cv2.waitKey(1) & 0xFF == ord('q')
行如何运作。
我知道这是一个AND
按位运算,只有当两个输入都是1时,输出才为1.但这就是它的全部。所以,我真的想知道究竟发生了什么。
而且,0xFF == ord('q')
实际上是什么意思?
答案 0 :(得分:1)
Python运算符优先级给我们:
(cv2.waitKey(1) & 0xFF) == ord('q')
在二进制文件中,这是:
(cv2.waitKey(1) & 0b11111111) == ord('q')
那么,这样做是选择结果cv2.waitKey
的低8位并测试它是否等于ord('q')
,这是'q'
的ASCII值。