import cv2
import os
# 处理单个视频文件的函数
def process_video_file(video_path, output_folder):
cap = cv2.VideoCapture(video_path)
# 读取并保存第20帧
frame_count = 0
while True:
ret, frame = cap.read()
frame_count += 1
if frame_count == 20:
if ret:
output_file = os.path.join(output_folder, os.path.splitext(os.path.basename(video_path))[0] + '_frame20.jpg')
cv2.imwrite(output_file, frame)
break
cap.release()
# 递归处理文件夹的函数
def process_folder(input_folder, output_folder):
for filename in os.listdir(input_folder):
filepath = os.path.join(input_folder, filename)
if os.path.isdir(filepath):
new_output_folder = os.path.join(output_folder, filename)
if not os.path.exists(new_output_folder):
os.makedirs(new_output_folder)
process_folder(filepath, new_output_folder)
elif filename.endswith('.mp4') or filename.endswith('.avi'):
process_video_file(filepath, output_folder)
# 设置根目录
root_input_folder = r'E:\ultralytics-mainmg\xingweifenxi'
root_output_folder = r'E:\ultralytics-mainmg\xingweifenxipic'
# 递归处理文件夹
process_folder(root_input_folder, root_output_folder)
print("所有视频文件的第20帧已经成功保存到对应文件夹下.")
# import cv2
# import os
#
# # 设置路径
# input_folder = r'E:\ultralytics-mainmg\xingweifenxi\climb\climb'
# output_folder = r'E:\ultralytics-mainmg\xingweifenxipic\climb'
#
# # 确保输出文件夹存在
# if not os.path.exists(output_folder):
# os.makedirs(output_folder)
#
# # 循环遍历输入文件夹中的视频文件
# for filename in os.listdir(input_folder):
# if filename.endswith('.avi'):
# video_path = os.path.join(input_folder, filename)
# cap = cv2.VideoCapture(video_path)
#
# # 读取并保存第20帧
# frame_count = 0
# while True:
# ret, frame = cap.read()
# frame_count += 1
# if frame_count == 10:
# if ret:
# output_file = os.path.join(output_folder, filename.split('.')[0] + '_frame20.jpg')
# cv2.imwrite(output_file, frame)
# break
#
# cap.release()
#
# print("所有视频文件的第20帧已经成功保存到'{}'目录下.".format(output_folder))
批量提取分类视频中的pic
最新推荐文章于 2024-05-21 20:15:28 发布