python + opencv 学习系列 2 : Getting Started with Videos

本文介绍如何使用OpenCV进行视频处理,包括从摄像头读取视频、播放视频文件以及保存视频。通过具体代码实例展示了视频处理的基本流程和技术要点。
本节主要是学习:
读取视频,播放视频,保存视频
从摄像头中读取视频,并保存视频
将会使用两个主要视频处理函数: cv2.VideoCapture(),cv2.VideoWriter()
参考文献:
 http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_gui/py_video_display/py_video_display.html#display-video
 http://www.2cto.com/kf/201312/261521.html

下面直接给出注释的比较全的代码:
def CaptureVideoFromCamera():
    ''' 从摄像头中读取视频帧 并 显示 '''
    import numpy as np
    import cv2

    #获取视频对象,参数是表示读取哪个摄像头的视频帧,如果只有一个那么参数就是0或者-1,有几个的话就以此类推啦!!
    cap = cv2.VideoCapture(0 )

    while(True ):
        #逐帧获取视频
        ret, frame = cap.read() #ret表示是否读取正确(正确True 错误False),frame存储视频帧
        if ret == False:
            print "read capture error!"
            break

        #将获取到的视频帧转换为灰度模式
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY )

        #播放处理后的结果 如果不想播放为灰度模式,则注销上一句并将gray改为frame即可
        cv2.imshow("frame from video", gray )

        #保持时间以及退出方式
        if cv2.waitKey(55) & 0xFF == ord("q"):  #55毫秒是正常播放速度
            break

    #退出,则释放摄像头,并销毁所有窗户
    cap.release()
    cv2.destroyAllWindows()

def PlayingVideoFromFile():
    ''' 从文件中获取视频帧 并 进行播放 '''
    import numpy as np
    import cv2

    #上面一个函数已经对所有语句注释过了,下面不进行重复注释了。
    cap = cv2.VideoCapture("007.flv")

    while(cap.isOpened() ):
        ret, frame = cap.read()

        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY )

        cv2.imshow("frame", gray )
        if cv2.waitKey(55) & 0xFF == ord("q"):
            break

    cap.release()
    cv2.destroyAllWindows()


def SavingVideo():
    ''' 从文件中读取一个视频并保存 '''
    import numpy as np
    import cv2

    #上面一个函数已经对所有语句注释过了,下面不进行重复注释了。
    cap = cv2.VideoCapture("007.flv")

    #获得码率及尺寸
    fps = cap.get(cv2.cv.CV_CAP_PROP_FPS)
    size = (int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),
            int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))

    #定义一种多媒体数字信号编解码器 并 创建视频保存的对象
    fourcc = cv2.cv.CV_FOURCC('M','J','P','G')
    out = cv2.VideoWriter('007_output.avi',fourcc, fps, size  )
    ret = True
    while(cap.isOpened() & ret ):
        ret, frame = cap.read()
        if ret == True:

            #进行图像翻转的函数
            #frame = cv2.flip(frame, 0 )

            #写入帧对象内
            out.write(frame )

            cv2.imshow("frame", frame )
            if cv2.waitKey(55) & 0xFF == ord("q"):
                break
        else:
            break

    #写入任务结束啦,现在所有的东西都要释放掉。
    cap.release()
    out.release()
    cv2.destroyAllWindows()





def mainPy():
    ''' python入口函数 '''
    #CaptureVideoFromCamera()
    #PlayingVideoFromFile()
    SavingVideo()



if __name__ == "__main__":
    mainPy( )

欢迎交流!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值