Fork me on GitHub

一 概念

OpenCV中保存视频使用的是VedioWriter对象,在其中指定输出文件的名称,

A 创建视频写入的对象

out = cv2.VideoWriter(filename,fourcc, fps, frameSize)

参数含义:

  • filename:视频保存的位置
  • fourcc:指定视频编解码器的4字节代码
  • fps:帧率
  • frameSize:帧大小

B 设置视频的编解码器

retval = cv2.VideoWriter_fourcc( c1, c2, c3, c4 )

参数含义:

  • c1,c2,c3,c4: 是视频编解码器的4字节代码,在fourcc.org中找到可用代码列表,与平台紧密相关,常用的有:

  • 在Windows中:DIVX(.avi)
  • 在OS中:MJPG(.mp4),DIVX(.avi),X264(.mkv)。

C .获取摄像头

 利用cap.read()获取摄像头中的每一帧图像,并使用out.write()将某一帧图像写入视频中。

D.释放资源

 使用cap.release()和out.release()释放资源。

 

2 实例解析

  切记,树莓派下video一般是0

import cv2 as cv

# 1. 读取摄像头
cap = cv.VideoCapture(0)

# 2. 获取图像的属性(宽和高,),并将其转换为整数
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))

# 3. 创建保存视频的对象,设置编码格式,帧率,图像的宽高等
out = cv.VideoWriter('outpy.avi', cv.VideoWriter_fourcc('M', 'J', 'P', 'G'), 10, (frame_width, frame_height))  # 保存视频
while(True):

    # 4.获取视频中的每一帧图像
    ret, frame = cap.read()
    if ret == True:

        # 5.将每一帧图像写入到输出文件中
        out.write(frame)  #视频写入
    else:
        break

# 6.释放资源
cap.release()
out.release()  #资源释放
cv.destroyAllWindows()

 

posted on 2023-08-19 09:25  虚生  阅读(318)  评论(0编辑  收藏  举报