编程语言
首页 > 编程语言> > Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出

Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出

作者:互联网

一步一步来吧

上一节:
Python+Opencv图像处理新手入门教程(三):阈值与二值化

1.Intro

今天这节我们主要看怎么利用opencv读取并处理视频中的内容。

2.VideoCapture

2.1.基本用法

cap = cv2.VideoCapture(src)

其中src指的是视频的路径。例如,我们可以指定视频来源为某个文件:

cap = cv2.VideoCapture('xxx.avi')

也可以指定视频来源为电脑的摄像头:

cap = cv2.VideoCapture(0)

这里的0表示摄像头id,如果有多个摄像头的话则可以顺次指定其他摄像头。
而对于读取到的视频流我们也可以进行一些参数的修改,例如:

cap.set(cv2.CAP_PROP_FRAME_WIDTH, w)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, h)

便可以将视频流的宽度、高度分别指定为w,h。需要注意的是,当修改宽度时,高度也会进行等比例的缩放,反之亦然。此时可以通过:

cap.get(cv2.CAP_PROP_FRAME_WIDTH)
cap.get(cv2.CAP_PROP_FRAME_HEIGHT)

来获取当前视频流的宽度和高度。
除此之外,一些常用的参数还有:

2.2.read

上一步中的VideoCapture获取的是一个视频流,那么接下来我们就可以从这个流中来逐帧的读取图像。读取一帧图像使用的是read方法:

ret, frame = cap.read()

至此,我们可以写出如下代码,其功能是读取电脑摄像头的图像并实时展示:

import cv2
cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    if ret == True:
        cv2.imshow('frame', frame)
        # 按q退出,通过右上角关闭按钮退出可能导致程序崩溃
        if cv2.waitKey(1)& 0xFF == ord('q'):
            break
# 释放摄像头
cap.release()
# 销毁所有窗口
cv2.destroyAllWindows()

3.VideoWriter

顾名思义,VideoWriter的作用就是导出视频了。

out = cv2.VideoWriter(name, fourcc, fps, (w, h))

编码器为VideoWriter_fourcc,其用法如下:

fourcc = cv2.VideoWriter_fourcc(encode)

其中encode为编码。所谓fourcc,意思就是这个编码有四个字符(Four-Character Codes)。常见的编码如下:

至此,我们可以写出如下代码,其能录制电脑摄像头的一段视频,并存储为output.avi:

import cv2
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while True:
    ret, frame = cap.read()
    if ret == True:
        out.write(frame)
        cv2.imshow('frame', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
cap.release()
out.release()
cv2.destroyAllWindows()

标签:Python,frame,cap,cv2,新手入门,Opencv,VideoCapture,fourcc,VideoWriter
来源: https://blog.csdn.net/qq_40714949/article/details/109500779