一段python代码:如何用opencv从文件夹的子文件夹的所有视频文件中取图片帧每隔25帧取1帧并按原路径类别在给定路径保存为图片文件
以下是一个使用OpenCV库在给定的文件夹中的子文件夹中提取视频帧的Python代码示例:
import os
import cv2
def extract_frames(input_folder, output_folder):
# 遍历文件夹及其子文件夹
for root, dirs, files in os.walk(input_folder):
for file in files:
if file.endswith('.mp4') or file.endswith('.avi') or file.endswith('.mov'):
video_path = os.path.join(root, file)
# 创建一个与视频文件名相同的文件夹
frame_folder = os.path.join(output_folder, os.path.splitext(file)[0])
os.makedirs(frame_folder, exist_ok=True)
# 打开视频文件
cap = cv2.VideoCapture(video_path)
frame_count = 0
frame_skip = 25 # 每隔25帧取1帧
while True:
ret, frame = cap.read()
if not ret:
break
# 每隔 frame_skip 帧保存一帧图像
if frame_count % frame_skip == 0:
frame_path = os.path.join(frame_folder, f"frame_{frame_count}.jpg")
cv2.imwrite(frame_path, frame)
frame_count += 1
cap.release()
# 使用示例
input_folder = "path/to/input/folder"
output_folder = "path/to/output/folder"
extract_frames(input_folder, output_folder)
请将代码中的input_folder和output_folder替换为实际的文件夹路径。代码会遍历input_folder中的所有子文件夹,查找扩展名为.mp4、.avi或.mov的视频文件,并从中提取每隔25帧的图像帧。提取的图像帧将按照原始视频文件的路径类别保存在output_folder中的相应子文件夹中
原文地址: https://www.cveoy.top/t/topic/ipIf 著作权归作者所有。请勿转载和采集!