1.waitKey()函数 (属于HighGUI模块)
使用key=cv2.waitKey(0)函数可以发现返回得到的key是int类型,而我们通过ord()函数得到的ASCLL码是8位的,因此我们会经常采用 key&0xFF ==ord('q') 来 对 键盘事件进行准确的判断。
waitkkey([delay])其中参数delay表示一个延时值,单位ms,默认为0,永久延时,一直等待,直到用户按键。如果 我们再delay指定时间内按下按键,返回对应按键的 ASCLL码;规定时间内未做出按键操作,返回-1.
同时如果delay<=0同样 会无限等待,>0则等待delay ms.比如waitKey(1000)则等待1s.
2.使用cv2.VideoCapture播放视频时 waitKey()该如何设置?
首先需要下载ffmpeg,官网为https://www.ffmpeg.org/,下载后并设置环境变量我们即可以使用ffplay,ffprobe指令来查看视频帧数。如下:
ffplay "视频文件路径"
可以发现我视频帧数为30帧/s,因此 waitKey可以设置为1000/30=33ms
播放视频代码如下:
import cv2
#创建窗口
cv2.namedWindow('video',cv2.WINDOW_NORMAL)
cv2.resizeWindow('video',640,480)
#获取视频设备(摄像头) /从视频文件读取视频
cap=cv2.VideoCapture(r"C:\Users\86166\Videos\Captures\shipin.mp4")
while True:
ret,frame=cap.read ()
cv2.imshow('video',frame) #frame为第二个参数 视频帧
print(frame.shape)
key=cv2.waitKey(33) #根据视频帧数设置 延时
if(key&0xFF==ord('q')):
break
#释放资源
cap.release()
cv2.destroyAllWindows()