| ''' |
| Date: 2024-06-01 14:09:13 |
| LastEditors: DreamTale |
| LastEditTime: 2024-06-03 12:12:13 |
| FilePath: /DataCrawler/mt_download.py |
| ''' |
| import os |
| import argparse |
| import subprocess |
| from concurrent.futures import ThreadPoolExecutor |
|
|
| |
|
|
|
|
| import os |
| import argparse |
| import subprocess |
| from concurrent.futures import ThreadPoolExecutor |
|
|
|
|
|
|
| import os |
| import cv2 |
|
|
| def extract_frames_from_videos(input_dir, out_dir, frame_interval=1): |
| if not os.path.isdir(input_dir): |
| print(f"Invalid input directory: {input_dir}") |
| return |
|
|
| os.makedirs(out_dir, exist_ok=True) |
| video_files = [f for f in os.listdir(input_dir) if f.lower().endswith('.mp4')] |
|
|
| if not video_files: |
| print(f"No .mp4 files found in {input_dir}") |
| return |
|
|
| for video_file in video_files: |
| video_path = os.path.join(input_dir, video_file) |
| v_name = os.path.splitext(video_file)[0] |
|
|
| dir_path = os.path.join(input_dir, v_name) |
|
|
| if os.path.exists(dir_path): |
| continue |
| os.makedirs(dir_path, exist_ok=True) |
|
|
|
|
| cap = cv2.VideoCapture(video_path) |
| if not cap.isOpened(): |
| print(f"Failed to open video: {video_path}") |
| continue |
|
|
| total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) |
| if total_frames == 0: |
| print(f"No frames found in video: {video_file}") |
| cap.release() |
| continue |
|
|
| frame_idx = 0 |
| saved_idx = 0 |
| while True: |
| ret, frame = cap.read() |
| if not ret: |
| break |
|
|
| if frame_idx % frame_interval == 0: |
| save_name = f"frame_{frame_idx:05d}.jpg" |
| save_path = os.path.join(dir_path, save_name) |
| try: |
| cv2.imwrite(save_path, frame) |
| saved_idx += 1 |
| except Exception as e: |
| print(f"Failed to save frame {frame_idx} of {video_file}: {e}") |
|
|
| frame_idx += 1 |
|
|
| cap.release() |
| print(f"Extracted {saved_idx} frames from {video_file}.") |
|
|
| |
| extract_frames_from_videos( |
| 'data_input/driven/target_images/', |
| 'data_input/driven/target_images/' |
| ) |
|
|