| # Image to Sketch Converter | |
| ## Overview | |
| This is a Python-based image processing application that converts regular photographs and images into pencil sketch style drawings. The application uses computer vision techniques to transform color images into artistic sketch representations, providing a simple command-line interface for image conversion operations. | |
| ## Recent Changes | |
| ### September 29, 2025 | |
| - Created complete image-to-sketch conversion program (`image_to_sketch.py`) | |
| - Implemented core algorithms: grayscale conversion, image inversion, Gaussian blur, and color-dodge blending | |
| - Added comprehensive command-line interface with help system | |
| - Included optional sketch enhancement with adaptive thresholding | |
| - **NEW: Built beautiful web interface with Flask backend** | |
| - Adapted stunning dark theme design for sketch conversion | |
| - Drag & drop file upload with animated gradient borders | |
| - Real-time image processing with visual feedback | |
| - Side-by-side original vs sketch comparison | |
| - Adjustable settings (blur intensity, enhanced lines) | |
| - Secure file handling and automatic cleanup | |
| - Successfully tested complete web application and verified output quality | |
| - Configured workflow for easy web server deployment | |
| ## User Preferences | |
| Preferred communication style: Simple, everyday language. | |
| ## System Architecture | |
| ### Core Processing Architecture | |
| - **Object-oriented design**: Built around the `ImageToSketch` class that encapsulates all conversion logic and image processing operations | |
| - **Pipeline-based processing**: Uses a multi-step conversion process including grayscale conversion and image inversion as the foundation for sketch creation | |
| - **File validation system**: Implements robust input validation to ensure image files exist and are in supported formats before processing | |
| ### Image Processing Framework | |
| - **OpenCV integration**: Primary image processing library for loading, manipulating, and converting images with support for multiple image formats | |
| - **PIL/Pillow support**: Secondary image handling capability for additional format compatibility and image operations | |
| - **NumPy arrays**: Underlying data structure for efficient image pixel manipulation and mathematical operations | |
| ### Input/Output Handling | |
| - **Multi-format support**: Handles common image formats including JPG, PNG, BMP, TIFF, and WebP files | |
| - **Command-line interface**: Uses argparse for parsing command-line arguments and user input processing | |
| - **Error handling**: Comprehensive validation for file existence, format compatibility, and image loading failures | |
| ### Processing Pipeline | |
| - **Grayscale conversion**: First step converts color images to grayscale using OpenCV's color space transformation | |
| - **Image inversion**: Creates negative images by inverting pixel values (255 - pixel_value) as part of the sketch effect | |
| - **Extensible design**: Architecture allows for easy addition of additional processing steps in the conversion pipeline | |
| ## External Dependencies | |
| ### Core Libraries | |
| - **OpenCV (cv2)**: Primary computer vision library for image loading, processing, and format handling | |
| - **NumPy**: Numerical computing library for efficient array operations and pixel manipulation | |
| - **PIL/Pillow**: Python Imaging Library for additional image processing capabilities and format support | |
| ### System Dependencies | |
| - **Python 3**: Requires Python 3.x runtime environment | |
| - **argparse**: Built-in Python module for command-line argument parsing | |
| - **os and sys**: Standard library modules for file system operations and system interaction | |
| ### File System Requirements | |
| - **Input validation**: Depends on local file system for image file validation and loading | |
| - **Format detection**: Uses file extensions and OpenCV's built-in format detection for image compatibility |