美文网首页
python中VideoCapture(),read(),wai

python中VideoCapture(),read(),wai

作者: BenjaminY | 来源:发表于2019-02-13 15:13 被阅读0次

    有以下程序

    import cv2
    cap = cv2.VideoCapture(0)
    while cap.isOpened():
        ret,frame = cap.read()
        cv2.imshow('frame',frame)
        c = cv2.waitKey(1)
        if c == 27:
            break
        
    cap.release()
    cv2.destroyAllWindows()
    

    说明:
    程序段里,
    1、cv2.VideoCapture()函数:
    cap = cv2.VideoCapture(0)
    VideoCapture()中参数是0,表示打开笔记本的内置摄像头。
    cap = cv2.VideoCapture("…/1.avi")
    VideoCapture("…/1.avi"),表示参数是视频文件路径则打开视频。

    2、cap.isOpened()函数:
    返回true表示成功,false表示不成功

    3、ret,frame = cap.read()函数:
    cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。

    4、cv2.waitKey()函数:
    参数是1,表示延时1ms切换到下一帧图像,参数过大如cv2.waitKey(1000),会因为延时过久而卡顿感觉到卡顿。
    参数为0,如cv2.waitKey(0)只显示当前帧图像,相当于视频暂停。
    注意:如果这里没有waitKey()函数,则只会显示空白窗口,看不到摄像头视频。个人分析是因为waitKey()让窗口保持了一定时间,否则前一帧还没有显示出来就开始显示下一帧,就会造成窗口一直是空白(如果是服务端程序无需gui窗口观看视频,则代码中无此函数要求):

    没有waitKey()函数时的空白窗口

    5、cap.release()与destroyAllWindows()函数:
    cap.release()释放视频,调用destroyAllWindows()关闭所有图像窗口。

    6、c = cv2.waitKey(1)
    c得到的是键盘输入的ASCII码,esc键对应的ASCII码是27,即当按esc键是if条件句成立。

    相关文章

      网友评论

          本文标题:python中VideoCapture(),read(),wai

          本文链接:https://www.haomeiwen.com/subject/kekdeqtx.html