Python,学霸
-
阅读指南 -
简介 -
安装方法 -
实例
简介
大家好!今天给你们带来了使用cv2把视频转为为一帧一帧图片的简单实例,可以设置间隔。
安装方法
pip install opencv-python
实例
import cv2
import os
def process_frame(frame_data, output_folder, save_as_grayscale=True):
index, image = frame_data
#转换为灰度图像
if save_as_grayscale:
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#生成图像文件名,保存图像
image_path = os.path.join(output_folder, f"frame_{index}.png")
cv2.imwrite(image_path, image)
def video_to_frames(video_path, output_folder, interval_seconds=None, save_as_grayscale=True):
"""
将视频转换为图像帧。
参数:
- video_path:视频文件路径
- output_folder:图像保存的文件夹路径
- interval_seconds:按秒间隔获取图像帧的时间间隔,设置为None则按每一帧获取
- save_as_grayscale: 是否以灰度图像保存
"""
#打开视频文件
vidcap = cv2.VideoCapture(video_path)
#创建输出文件夹(如果不存在)
os.makedirs(output_folder, exist_ok=True)
#获取视频帧率
fps = int(vidcap.get(cv2.CAP_PROP_FPS))
#计算间隔帧数
if interval_seconds:
interval_frames = int(fps * interval_seconds)
else:
interval_frames = 1
index = 0
while True:
success, image = vidcap.read()
if success:
if interval_seconds is None or interval_seconds and index % interval_frames == 0:
process_frame((index, image), output_folder, save_as_grayscale)
index += 1
else:
break
#关闭视频文件
vidcap.release()
#开始转换
#当save_as_grayscale为True时颜色为无色
#interval_seconds为切割间隔,默认为帧数
video_to_frames('视频.mp4', 'output_folder', interval_seconds=None, save_as_grayscale=False)
效果:
原文始发于微信公众号(python学霸):一秒教你如何使用Python把视频切成帧
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/275934.html