Extract and select the sharpest frames from videos or directories of images using advanced sharpness scoring algorithms. Features a modern text-based interface for easy configuration and powerful command-line options for automation.
pip install sharp-framesOr with pipx for isolated installation:
pipx install sharp-framesIMPORTANT: Video Processing Requirement: Install FFmpeg separately for video input support.
- Windows: Download from FFmpeg website and add to PATH
- macOS:
brew install ffmpeg - Linux:
sudo apt install ffmpeg
sharp-framesLaunches an intuitive step-by-step wizard for configuring your processing options.
sharp-frames input_video.mp4 output_folder
sharp-frames image_directory output_folder- Fancy UI:
sharp-frames(default) - Step-by-step with validation - Legacy:
sharp-frames --interactive- Terminal prompts for all options
sharp-frames <input> <output> [options]Input Types:
- Video files:
.mp4,.avi,.mov,.mkv,.wmv,.flv,.webm,.m4v, etc. - Video directories: Processes all videos in a folder
- Image directories:
.jpg,.jpeg,.png,.bmp,.tiff,.webp, etc.
Selects a target number of the sharpest frames while maintaining distribution across the source.
--selection-method best-n --num-frames 300 --min-buffer 3Divides content into batches and selects the sharpest frame from each batch.
--selection-method batched --batch-size 5 --batch-buffer 2Removes unusually blurry frames by comparing each frame to its neighbors.
--selection-method outlier-removal --outlier-window-size 15 --outlier-sensitivity 50--fps <int>: Frame extraction rate for videos (default: 10)--format <jpg|png>: Output image format (default: jpg)--width <int>: Resize width in pixels, maintains aspect ratio (default: 0, no resize)--force-overwrite: Overwrite existing output files without confirmation
--num-frames <int>: Number of frames to select (best-n, default: 300)--min-buffer <int>: Minimum gap between selected frames (best-n, default: 3)--batch-size <int>: Frames per batch (batched, default: 5)--batch-buffer <int>: Frames to skip between batches (batched, default: 2)--outlier-window-size <int>: Neighbor comparison window (outlier-removal, default: 15)--outlier-sensitivity <int>: Removal aggressiveness 0-100 (outlier-removal, default: 50)
# Default settings
sharp-frames video.mp4 output_frames
# Custom frame rate and selection
sharp-frames video.mp4 output --fps 15 --num-frames 500
# Batch selection with resizing
sharp-frames video.mp4 output --selection-method batched --width 1920
# Process all videos in a directory
sharp-frames video_folder output_frames --fps 5# Select best images from directory
sharp-frames image_folder selected_images --num-frames 100
# Remove blurry images
sharp-frames photos selected --selection-method outlier-removal --outlier-sensitivity 75- Smart File Validation: Automatic format detection with helpful error messages
- Textual Interface: Step-by-step wizard with real-time validation and help system
- Flexible Input: Process single videos, video directories, or image directories
- Multiple Algorithms: Three selection methods optimized for different use cases
- Real-time Progress: Live progress tracking for all processing stages
- Parallel Processing: Multi-core sharpness calculation for faster processing
- Image Resizing: Optional width-based resizing with aspect ratio preservation
- Safe Operation: Validates paths, permissions, and file formats before processing
- Comprehensive Output: Selected files plus detailed metadata JSON
- Python 3.7 or higher
- Dependencies installed automatically:
opencv-python,numpy,tqdm,textual - FFmpeg (for video processing only)
- Validation: Checks input paths, file formats, and system dependencies
- Extraction: Videos are extracted to frames at specified FPS using FFmpeg
- Analysis: Calculates sharpness scores using Laplacian variance in parallel
- Selection: Applies chosen algorithm to select the best frames/images
- Output: Saves selected content with metadata including scores and parameters
- Selected frames/images with descriptive filenames
selected_metadata.jsonwith processing details, parameters, and sharpness scores- Preserves original formats for image directory input
- Automatic output directory creation with permission validation
- Press
F1in the textual interface for context-sensitive help - Use
Ctrl+Cto safely cancel processing at any time - All validation errors include specific guidance for resolution
- Visit Sharp Frames for the full desktop application