一段python代码:如何用opencv从文件夹的子文件夹的所有视频文件中取图片帧每隔25帧取1帧并按原路径类别保存为图片文件
以下是一个使用OpenCV从文件夹的子文件夹中提取视频帧并保存为图像文件的Python代码:
import cv2
import os
# 输入文件夹路径
folder_path = "/path/to/folder"
# 获取文件夹中的所有子文件夹
subfolders = [f.path for f in os.scandir(folder_path) if f.is_dir()]
# 循环遍历每个子文件夹
for subfolder in subfolders:
# 获取子文件夹的名称
category = os.path.basename(subfolder)
# 获取子文件夹中的所有视频文件
video_files = [f.path for f in os.scandir(subfolder) if f.is_file() and f.name.endswith((".mp4", ".avi", ".mov"))]
# 循环遍历每个视频文件
for video_file in video_files:
# 打开视频文件
video = cv2.VideoCapture(video_file)
# 获取视频文件的基本名称(不包含扩展名)
file_name = os.path.splitext(os.path.basename(video_file))[0]
# 设置帧计数器
frame_count = 0
# 循环遍历视频的每一帧
while True:
# 读取视频的下一帧
ret, frame = video.read()
# 检查是否成功读取帧
if not ret:
break
# 每隔25帧取1帧
if frame_count % 25 == 0:
# 生成保存图像的文件路径
image_file = os.path.join(subfolder, f"{file_name}_{frame_count}.jpg")
# 保存图像文件
cv2.imwrite(image_file, frame)
# 增加帧计数器
frame_count += 1
# 释放视频对象
video.release()
请将/path/to/folder替换为您实际的文件夹路径。此代码假设您的视频文件是.mp4,.avi或.mov格式的,您可以根据需要进行修改
原文地址: https://www.cveoy.top/t/topic/ipIa 著作权归作者所有。请勿转载和采集!