# cv.VideoWrite(filename,fourcc,fps,frameSize,isColor = Ture) 将多个视频帧保存为视频文件
filename:视频保存路径;
fourcc可选参数: DIVX;XVID;MJPG;X264;WMV1;WMV2;常用:X264常用于小视频;MJPG
frame:帧数;
size:窗口大小;
isColor(可选,默认为True): 是否原彩
步骤一: 先设置fourcc: fourcc = cv.VideoWriter_fourcc(*'MJPG') # 括号内也可以这么写:(‘M','J','P','G')
步骤二: 创建对象: vw = cv.VideoWriter("写入目标文件",fourcc,fps,(size_w,size_h))注:size设置大小必须符合采集摄像头分辨率或者视频分辨率。
步骤三: 在cap.read()读取到视频帧后,可以调用vw.writer(frame)写入到指定目标文件。
步骤四: 释放vw对象:vw.release()
# cap.isOpened()判断摄像头是否打开,返回布尔值
实现一个读取视频及保存到指定目录下的小案例:
import cv2 as cv
#--------------------------------
# 创建VideoWriter为写多媒体文件
fourcc = cv.VideoWriter_fourcc(*'XVID')
vw = cv.VideoWriter('./video/out.mp4', fourcc, 50, (1280, 720))
# 创建窗口
cv.namedWindow('video', cv.WINDOW_NORMAL)
# 获取视频设备
# cap = cv.VideoCapture(0)# 获取摄像头,默认为0
cap = cv.VideoCapture('./video/cars.mp4')# 根据视频获取图片,唯一的变化仅参数改为视频路径
while True:
# 判断摄像头是否打开
# if cap.isOpened():
# 从摄像头读取视频帧
ret, frame = cap.read()# 返回俩参数,参数一:ret表示意思是否读取到视频帧,参数二是读到的视频帧
# 显示视频帧
cv.imshow('video', frame)
cv.resizeWindow('video', 640, 360)
if ret:
# 写数据到多媒体文件
vw.write(frame)
key = cv.waitKey(1)
if key & 0xFF == ord('q'):
break
else:
print('读取完成或未读到数据')
break
# else:
# print('摄像头打开失败')
# break
# 释放Videocapture
cap.release()
# 释放vw资源
vw.release()
# 释放窗口
cv.destroyAllWindows()