【Python实战】教你如何使用OpenCV提取视频帧为图片

在视频处理领域,提取视频中的帧并保存为图片是一项非常实用的技能。今天,我将带大家使用Python的OpenCV库来

功能介绍

本脚本可以帮助你从视频中按照指定的帧间隔提取图片,并保存到指定的文件夹中。你可以自定义图片的宽高、帧率以及帧间隔。

提取为24位图的BMP格式图片,用于嵌入式开发LCD屏幕显示图片,多张图片循环显示,达成视频效果

实现这一功能。以下是详细的步骤和代码解析:

import cv2
import os

def extract_frames_from_video(video_path, output_folder, width=472, height=300, fps=30, frame_interval=1):
    # 确保输出文件夹存在
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 读取视频文件
    cap = cv2.VideoCapture(video_path)

    # 尝试设置视频帧率
    cap.set(cv2.CAP_PROP_FPS, fps)

    # 获取实际帧率
    actual_fps = cap.get(cv2.CAP_PROP_FPS)
    print(f"设置的帧率为: {fps}, 实际帧率为: {actual_fps}")

    frame_count = 0
    frame_index = 0

    while True:
        # 逐帧读取视频
        ret, frame = cap.read()
        if not ret:
            break  # 如果读取帧失败,则结束循环

        # 根据间隔提取帧
        if frame_count % frame_interval == 0:
            # 调整帧尺寸
            frame = cv2.resize(frame, (width, height))

            # 保存帧为24位bmp格式
            frame_filename = os.path.join(output_folder, f"frame_{frame_index}.bmp")
            cv2.imwrite(frame_filename, frame)
            frame_index += 1

        frame_count += 1

    # 释放视频捕获对象
    cap.release()
    return frame_index

# 使用示例
video_path = '1.mp4'  # 请替换为您的视频文件路径
output_folder = 'image1'  # 请替换为您的输出文件夹路径
frame_interval = 5  # 每隔5帧提取一张图片
frames_extracted = extract_frames_from_video(video_path, output_folder, fps=30, frame_interval=frame_interval)
print(f"提取了 {frames_extracted} 帧。")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值