Python和OpenCV - 我如何理解这个按位运算符?

时间:2016-04-07 06:29:44

标签: python opencv bitwise-and

我仍然是编程的初学者,如果这个问题太微不足道了,请跟我说。假设我有这段代码:

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')实际上是什么意思?

1 个答案:

答案 0 :(得分:1)

Python运算符优先级给我们:

(cv2.waitKey(1) & 0xFF) == ord('q')

在二进制文件中,这是:

(cv2.waitKey(1) & 0b11111111) == ord('q')

那么,这样做是选择结果cv2.waitKey的低8位并测试它是否等于ord('q'),这是'q'的ASCII值。