OpenCV-Python[第二章]——视频初步

来源:互联网 发布:淘宝电脑整机 编辑:程序博客网 时间:2024/05/16 19:04

    • 简介
    • 捕捉视频
    • 保存视频
    • 示例代码

简介

本小节学习读取/显示/保存视频。涉及到的主要函数是cv2.VideoCapture(),cv2.VideoWriter().

捕捉视频

使用cv2.VideoCapture即可捕捉视频,它的参数可以是数字或者文件名,并且可以返回一个VideoCapture对象。如果是数字则代表连接的摄像头,有多个摄像头的情况依次为0,1,2.文件名则表示从本地视频文件获取视频流。之后就可以一帧帧捕捉视频并逐帧处理、显示等。最后需要释放,否则摄像头会一直处于打开状态。

保存视频

使用cv2.VideoWriter()创建一个VideoWriter对象,其用法如下:

# Define the codec and create VideoWriter objectfourcc = cv2.VideoWriter_fourcc(*'X264')out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))

参数依次为输出文件名、FourCC、帧率、大小。其中FourCC是一个4字节的代码用于指定所用编码器。关于FourCC的更多细节可以查看fourcc.org常见的FourCC码有:DIVX,XVID,MJPG,X264,WMV1,WMV2等。

示例代码

import numpy as npimport cv2cap = cv2.VideoCapture(0)#cap = cv2.VideoCapture('test.avi') #use local file to create capture# Define the codec and create VideoWriter objectfourcc = cv2.VideoWriter_fourcc(*'X264')out = cv2.VideoWriter('output.avi',fourcc, 25.0, (640,480))while(cap.isOpened()):    ret, frame = cap.read()    if ret==True:        frame = cv2.flip(frame,0)        # write the flipped frame        out.write(frame)        cv2.imshow('frame',frame)        if cv2.waitKey(1) & 0xFF == ord('q'):            break    else:        break# Release everything if job is finishedcap.release()out.release()cv2.destroyAllWindows()

代码很简单,打开摄像头创建一个捕捉视频流,以及创建一个输出视频流保存视频文件。while循环中逐帧读取视频帧,使用cv2.flip函数对帧进行翻转,对翻转后的视频帧进行输出保存以及显示。最后是进行资源的释放和窗口的销毁。

0 0
原创粉丝点击