# ASCII Camera 📹✨

```
╔══════════════════════════════════════════╗
║            🎥 ASCII CAMERA 📹           　║
║        Real-time Retro Video Art         ║
╚══════════════════════════════════════════╝
```

Transform your webcam feed into retro ASCII art in real-time! ASCII Camera brings back the nostalgic charm of text-based graphics while showcasing your creativity in the terminal.


## Features

🎥 **Real-time conversion**: Live webcam feed to ASCII art  
🌈 **Colorful output**: Support for colored ASCII art with ANSI escape codes  
⚡ **High performance**: Optimized for smooth real-time rendering  
🎛️ **Customizable**: Multiple ASCII character sets and color schemes  
📏 **Adaptive resolution**: Automatically adjusts to your terminal size  
🔧 **Easy to use**: Simple command-line interface  

## Installation

### From PyPI (recommended)
```bash
pip install ascii-camera
```

### From source
```bash
git clone https://github.com/masashimorita/ascii_camera.git
cd ascii_camera
pip install -e .
```

## Usage

### Basic usage
```bash
ascii-camera
```

### With custom options
```bash
# High detail ASCII characters
ascii-camera --charset detailed

# Colored output
ascii-camera --color

# Custom resolution
ascii-camera --width 80 --height 24

# Different FPS
ascii-camera --fps 15

# Retro green terminal theme
ascii-camera --color --theme matrix
```

### Available options
- `--width, -w`: Terminal width (default: auto-detect)
- `--height, -h`: Terminal height (default: auto-detect) 
- `--fps`: Frames per second (default: 12)
- `--charset`: ASCII character set (simple/detailed/block)
- `--color`: Enable colored output
- `--theme`: Color theme (matrix/amber/cyan/rainbow)
- `--camera`: Camera device index (default: 0)
- `--help`: Show help message

## ASCII Character Sets

- **Simple**: ` .:-=+*#%@` (10 levels)
- **Detailed**: ` .,'~!;<>+*xvXGM#8@` (16 levels)  
- **Block**: ` ░▒▓█` (4 levels, bold look)

## Color Themes

- **Matrix**: Classic green-on-black terminal
- **Amber**: Retro amber terminal
- **Cyan**: Cool cyan blue
- **Rainbow**: Dynamic color mapping

## Requirements

- Python 3.8+
- OpenCV (opencv-python)
- NumPy
- Colorama (for Windows color support)
- Webcam/camera device

## How it works

1. **Capture**: Uses OpenCV to grab frames from your webcam
2. **Process**: Converts each frame to grayscale and resizes to terminal dimensions
3. **Map**: Maps pixel brightness values to ASCII characters
4. **Display**: Renders the ASCII frame in your terminal with optional colors
5. **Repeat**: Continues the process for real-time video

## Troubleshooting

### Camera not found
```bash
# Try different camera indices
ascii-camera --camera 1
ascii-camera --camera 2
```

### Performance issues
```bash
# Lower FPS for better performance
ascii-camera --fps 8

# Smaller resolution
ascii-camera --width 60 --height 20
```

### Terminal compatibility
- Works best with modern terminals that support ANSI escape codes
- For Windows: Use Windows Terminal, ConEmu, or enable ANSI support

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## License

MIT License - see LICENSE file for details.

## Inspiration

Inspired by classic ASCII art and retro terminal aesthetics. Perfect for developers who love the intersection of modern technology and nostalgic computing.
