import cv2
if __name__ == '__main__':
cap = cv2.VideoCapture('bb.mp4')#读入视频
cv2.namedWindow('tracking')#建立一个窗口来放我们的视频
while (cap.isOpened()):#判断相机是否打开成功
ret, frame = cap.read()#捕获一帧图像
if not ret:#如果捕获失败,则退出
break
cv2.imshow('tracking', frame)
c = cv2.waitKey(1) & 0xFF
if c == 27 or c == ord('q'):#判断按键,如果按键为q或esc,退出循环
break
cap.release()#关闭相机
cv2.destroyAllWindows()#关闭窗口
cv2.waitkey(delaytime)------->returnvalue
在delaytime时间内,按键盘, 返回所按键的ASCII值;若未在delaytime时间内按任何键, 返回-1; 其中,dalaytime: 单位ms;
- 当delaytime为0时,表示forever,永不退回.
- 当按ecs键时,因为esc键ASCII值为27,所有returnvalue的值为27,一般用这个机制实现在delaytime内正常退出.
- 也使用 if cv2.waitKey(1) & 0xFF == ord(‘q’): break来实现1ms之内的正常退出。 其中, ord(‘q’):返回q对应的Unicode码对应的值,q对应的Unicode数值为113。
- 0xFF:0xFF是一个位掩码,十六进制常数,二进制值为11111111, 它将左边的24位设置为0,把返回值限制在在0和255之间。ord(’ ')返回按键对应的整数(ASCII码)