python+opencv提取.mp4 视频的每一帧并将其保存为图片

python+opencv提取.mp4 视频的每一帧并将其保存为图片

提取 .mp4 视频的每一帧并将其保存为图片,可以使用 cv2 库(OpenCV)。下面是一个完整的示例代码,演示如何使用 OpenCV 提取视频的每一帧并将其保存为图片,使用时需要将mp4文件及路径放至video_path ,提取的图片存储的路径放至output_folder

import cv2
import osdef extract_frames(video_path, output_folder):# 打开视频文件video_capture = cv2.VideoCapture(video_path)# 检查视频是否成功打开if not video_capture.isOpened():print(f"Error opening video file: {video_path}")return# 确保输出文件夹存在,如果不存在则创建if not os.path.exists(output_folder):os.makedirs(output_folder)frame_count = 0while True:# 逐帧读取视频ret, frame = video_capture.read()# 如果读取失败,退出循环if not ret:break# 翻转图像(垂直翻转)frame = cv2.flip(frame, 0)# 构建帧的输出文件路径frame_filename = os.path.join(output_folder, f"frame_{frame_count:04d}.png")# 保存帧为图片cv2.imwrite(frame_filename, frame)# 打印保存信息print(f"Saved: {frame_filename}")frame_count += 1# 释放视频捕捉对象video_capture.release()print("Finished extracting frames.")# 使用示例
video_path = "example.mp4"  # 输入视频文件路径
output_folder = "output_frames"  # 输出图片保存文件夹extract_frames(video_path, output_folder)

如果保存的图片方向不对,可以通过使用 cv2.rotate() 函数进行图像反转,比如需要每个图片都顺时针转90度,代码修改如下:

import cv2
import osdef extract_frames(video_path, output_folder):# 打开视频文件video_capture = cv2.VideoCapture(video_path)# 检查视频是否成功打开if not video_capture.isOpened():print(f"Error opening video file: {video_path}")return# 确保输出文件夹存在,如果不存在则创建if not os.path.exists(output_folder):os.makedirs(output_folder)frame_count = 0while True:# 逐帧读取视频ret, frame = video_capture.read()# 如果读取失败,退出循环if not ret:break# 旋转图像 90 度(顺时针)frame = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE)# 构建帧的输出文件路径frame_filename = os.path.join(output_folder, f"frame_{frame_count:04d}.png")# 保存帧为图片cv2.imwrite(frame_filename, frame)# 打印保存信息print(f"Saved: {frame_filename}")frame_count += 1# 释放视频捕捉对象video_capture.release()print("Finished extracting frames.")# 使用示例
video_path = "example.mp4"  # 输入视频文件路径
output_folder = "output_frames"  # 输出图片保存文件夹extract_frames(video_path, output_folder)

比如需要每个图片都顺时针转180度,代码修改如下:

import cv2
import osdef extract_frames(video_path, output_folder):# 打开视频文件video_capture = cv2.VideoCapture(video_path)# 检查视频是否成功打开if not video_capture.isOpened():print(f"Error opening video file: {video_path}")return# 确保输出文件夹存在,如果不存在则创建if not os.path.exists(output_folder):os.makedirs(output_folder)frame_count = 0while True:# 逐帧读取视频ret, frame = video_capture.read()# 如果读取失败,退出循环if not ret:break# 旋转图像 180 度(顺时针)frame = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE)frame = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE)# 构建帧的输出文件路径frame_filename = os.path.join(output_folder, f"frame_{frame_count:04d}.png")# 保存帧为图片cv2.imwrite(frame_filename, frame)# 打印保存信息print(f"Saved: {frame_filename}")frame_count += 1# 释放视频捕捉对象video_capture.release()print("Finished extracting frames.")# 使用示例
video_path = "example.mp4"  # 输入视频文件路径
output_folder = "output_frames"  # 输出图片保存文件夹extract_frames(video_path, output_folder)

发布者:admin,转转请注明出处:http://www.yc00.com/web/1724958110a3408701.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信