一秒教你如何使用Python把视频切成帧

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学霸):一秒教你如何使用Python把视频切成帧

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/275934.html

(0)
python学霸的头像python学霸bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!