如果你想要每隔一定数量的帧保存一张照片,可以在extract_frames.py脚本中添加一个名为frame_interval的参数,并稍微修改代码。
在下面的示例中,我将frame_interval设置为10,这意味着每隔10帧,就会保存一张照片。
这样,脚本将每隔frame_interval帧保存一张图片到指定的输出目录。你可以根据需求调整frame_interval的值。
import cv2
import os
def extract_frames(video_path, output_dir, frame_interval):
# 读取视频文件
video = cv2.VideoCapture(video_path)
# 检查是否成功打开了视频文件
if not video.isOpened():
print("Error: Could not open the video file.")
return
# 确保输出目录存在
if not os.path.exists(output_dir):
os.makedirs(output_dir)
frame_count = 0
saved_frame_count = 0
while True:
# 逐帧读取视频
ret, frame = video.read()
# 如果没有更多帧,则跳出循环
if not ret:
break
# 只有当帧计数器是间隔的整数倍时,才保存当前帧到指定目录
if frame_count % frame_interval == 0:
frame_filename = os.path.join(output_dir, f"frameqqq{saved_frame_count:04d}.png")
cv2.imwrite(frame_filename, frame)
saved_frame_count += 1
frame_count += 1
# 释放资源并关闭窗口
video.release()
print(f"{saved_frame_count} frames have been saved to {output_dir}.")
if __name__ == "__main__":
video_path = "/home/lcp/下载/mp4/B3.mp4"
output_dir = "/home/lcp/下载/mp4/hand1"
frame_interval = 2
extract_frames(video_path, output_dir, frame_interval)