Python OpenCV实现视频逐帧提取与反向合成教程

沈亦白
沈亦白
发布时间:2026-10-14 | 4人浏览过
原创

本文详细介绍如何利用Python的OpenCV库实现视频的分解与合成。通过cv2.VideoCapture读取视频帧并保存为图片,再使用cv2.VideoWriter结合指定编解码器(如MJPG)将图片序列重新合成为视频文件。文中包含完整的代码示例及关键参数设置说明,适用于基础视频处理需求。

视频分解为图片的实现

1.视频分解图片

首先,我们需要利用cv2.VideoCapture模块来打开并读取视频文件。


import cv2
cap = cv2.VideoCapture('1.mp4')
isOpened = cap.isOpened  # 判断视频是否可读
print(isOpened)
fps = cap.get(cv2.CAP_PROP_FPS) # 获取图像的帧,即该视频每秒有多少张图片
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # 获取图像的宽度和高度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(fps, width, height)
i = 0
while(isOpened):
  if i == 10:
    break
    
  # 读取每一帧,falg表示是否读取成功,frame为图片的内容
  (flag, frame) = cap.read()  
  filename = 'img' + str(i) + '.jpg' # 文件的名字
  if flag:
    cv2.imwrite(filename, frame, [cv2.IMWRITE_JPEG_QUALITY,100]) # 保存图片
  i += 1

图片序列合成视频的实现

2.图片合成视频

在合成阶段,我们需要调用cv2.VideoWrite方法来初始化一个视频写入器对象。

接着,使用cv2.VideoWriter_fourcc函数来指定视频文件的编解码器格式。

若需创建mp4格式的视频文件,视频编解码器应设置为cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')。


import cv2
img = cv2.imread('img0.jpg')
width = img.shape[0]
height = img.shape[1]
size = (height, width)
print(size)

videoname = "2.mp4"  # 要创建的视频文件名称 
fourcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G') # 编码器 
fps = 5 # 帧率

# 1.要创建的视频文件名称 2.编码器 3.帧率 4.size
videoWrite = cv2.VideoWriter(videoname,fourcc, fps, size)
for i in range(10):
  filename = 'img' + str(i) + '.jpg'
  img = cv2.imread(filename)
  videoWrite.write(img) # 写入

720 1280

至此,关于使用python-cv2实现视频的分解与合成的介绍已完成。如需了解更多相关内容,建议搜索本站历史文章或继续浏览后续教程,感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表