📅  最后修改于: 2023-12-03 15:14:24.360000             🧑  作者: Mango
在计算机视觉中,我们经常需要将图像序列保存成视频文件以进行后续处理或展示。本文将介绍如何使用Python中的OpenCV(cv2)库保存视频文件。
在使用cv2保存视频时,我们需要准备以下工作:
!pip install opencv-python
import cv2
import os
# 图像序列所在文件夹路径
image_folder = './images'
# 视频输出路径及名称
video_name = 'output.mp4'
# 获取文件夹中第一个图像作为参考大小
img = cv2.imread(os.path.join(image_folder, os.listdir(image_folder)[0]))
height, width, _ = img.shape
# 初始化视频编解码器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
video = cv2.VideoWriter(video_name, fourcc, 30, (width, height))
# 遍历文件夹中每一张图像并写入视频
for filename in sorted(os.listdir(image_folder)):
img = cv2.imread(os.path.join(image_folder, filename))
video.write(img)
# 释放资源
video.release()
cv2.destroyAllWindows()
代码解读:
image_folder
下,我们以cv2.imread()
方式获取第一张图像的大小信息,并初始化视频编解码器。cv2.VideoWriter()
函数创建一个输出视频文件对象video
,其中设定的帧率为30,视频大小与第一张图像相同。image_folder
中的每一张图像,并逐个用video.write()
函数写入视频中。video
对象并关闭窗口。如果我们需要从摄像头获取实时帧,并实时将帧序列保存为视频文件,可以使用如下代码:
import cv2
# 设定获取实时帧的分辨率大小
width, height = 640, 480
# 初始化视频编解码器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
video = cv2.VideoWriter('output.mp4', fourcc, 30, (width, height))
# 打开摄像头
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
while(True):
# 逐帧获取摄像头画面
ret, frame = cap.read()
if ret:
# 写入输出视频文件
video.write(frame)
# 实时展示摄像头视频
cv2.imshow('frame', frame)
# 响应键盘按键
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cap.release()
video.release()
cv2.destroyAllWindows()
运行该代码后即可打开计算机摄像头,并将实时帧保存为一个名为output.mp4
的视频文件。在代码中,我们通过cv2.VideoCapture()
函数来打开摄像头并设置帧的大小,并通过cv2.imshow()
实时展示摄像头的画面。使用cv2.waitKey()
函数来监听键盘,当按下q
键后退出程序。最后需要释放video
和cap
对象并关闭窗口。
本文介绍了如何使用cv2库将图像序列保存为视频文件,并且给出了实时保存摄像头视频的代码。通过这些方法,我们可以高效地处理并分析计算机视觉中的图像序列数据。