Python | opencv实现视频抽帧,截取视频图片积攒训练集

在机器学习和计算机视觉领域,训练集的构建往往需要大量图像数据。视频作为动态图像的集合,通过抽帧技术可以快速生成成百上千张图片。

以老友记第一季第1集为例,我们可以通过间隔3秒抽一帧方式获取角色脸部图片

具体代码如下:

import cv2
import os

def video2img(video_path, output_folder, seconds_interval):
    video = cv2.VideoCapture(video_path)
    fps = video.get(cv2.CAP_PROP_FPS)
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    serial = 0  # 记录当前处理的帧序号
    number = 0  # 记录已保存的帧数量
    frame_interval = int(fps * seconds_interval)  # 计算间隔多少帧取一帧

    while video.isOpened():
        ret, frame = video.read()
        if not ret:
            break

        if serial % frame_interval == 0:
            filename = os.path.join(output_folder, f"{number}.png")
            os.makedirs(output_folder, exist_ok=True)  # 确保目录存在
            cv2.imwrite(filename, frame)
            number += 1
            print('已保存', filename)

        serial += 1

    video.release()
    print(f"总共保存了 {number} 帧")

# 参数配置部分
video_path = '老友记第一季1.mp4'  # 视频文件路径(需替换为实际路径)
output_folder = 'old_friend'     # 输出文件夹名称(切记要为英文文件夹)
seconds_interval = 3        # 每3秒抽一帧

# 调用函数执行抽帧操作
video2img(video_path, output_folder, seconds_interval)

运行结果如图:

相关文章:爬虫实战 | 爬取美剧天堂影视,合并ts文件为mp4文件-CSDN博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值