请看下面的攻略。
OpenCV将视频分解成单帧图片
1. 准备工作
首先需要安装OpenCV。如果你还没有安装,可以参考官方文档进行安装:https://opencv.org/
2. 加载视频
使用OpenCV中的VideoCapture类加载视频,定义一个VideoCapture对象,使用对象的open方法打开视频文件,代码如下:
import cv2
video_file = 'video.mp4'
cap = cv2.VideoCapture(video_file)
if not cap.isOpened():
print('Could not open video file')
exit()
3. 获取帧数
获取视频的帧数,用于后续循环读取每一帧。
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
4. 循环读取帧并保存成图片
使用对象的read方法读取每一帧,并将每一帧保存成图片。
for i in range(frame_count):
ret, frame = cap.read()
if not ret:
break
cv2.imwrite(f'frame_{i:04d}.jpg', frame)
示例一:将视频分解成单帧图片
下面是一个完整的示例,将视频文件分解成单帧图片存储到本地。请注意,示例中的路径和文件名请根据实际情况修改。
import cv2
video_file = 'video.mp4'
cap = cv2.VideoCapture(video_file)
if not cap.isOpened():
print('Could not open video file')
exit()
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
for i in range(frame_count):
ret, frame = cap.read()
if not ret:
break
cv2.imwrite(f'frame_{i:04d}.jpg', frame)
cap.release()
图片合成视频示例
1. 准备工作
同样需要安装OpenCV。
2. 加载图片
使用OpenCV中的imread函数加载图片,定义一个空的list,将每一张图片添加到list中。
import cv2
import os
image_folder = 'frames'
images = []
for filename in os.listdir(image_folder):
img = cv2.imread(os.path.join(image_folder, filename))
if img is not None:
images.append(img)
3. 创建视频
使用OpenCV中的VideoWriter类创建视频。
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('video.mp4', fourcc, 30, (images[0].shape[1], images[0].shape[0]))
4. 将图片写入视频
将每一张图片写入视频。
for i in range(len(images)):
out.write(images[i])
out.release()
示例二:将图片合成视频
下面是一个完整的示例,将单帧图片合成视频并保存到本地。请注意,示例中的路径和文件名请根据实际情况修改。
import cv2
import os
image_folder = 'frames'
images = []
for filename in os.listdir(image_folder):
img = cv2.imread(os.path.join(image_folder, filename))
if img is not None:
images.append(img)
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('video.mp4', fourcc, 30, (images[0].shape[1], images[0].shape[0]))
for i in range(len(images)):
out.write(images[i])
out.release()
希望这个攻略能够帮助你完成视频分解成单帧图片以及图片合成视频的过程。如果你还有其他问题,欢迎继续提问。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用OpenCV将视频分解成单帧图片,图片合成视频示例 - Python技术站