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博客

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

你可能感兴趣的:(Python,python,opencv,开发语言,人工智能,音视频)