批量提取分类视频中的pic

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))

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值