在机器学习和计算机视觉领域,训练集的构建往往需要大量图像数据。视频作为动态图像的集合,通过抽帧技术可以快速生成成百上千张图片。
以老友记第一季第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博客


2740

被折叠的 条评论
为什么被折叠?



