Professional interactive image viewer and processing application for computer vision research and real-time parameter tuning.
- Quick Start
- Features
- Examples
- Controls
- Interface Gallery
- Architecture
- API Reference
- Contributing
- License
# Option 1: Install from PyPI (recommended for users)
pip install ParamTunerCV
# Option 2: Install with uv (fastest)
uv add ParamTunerCV
# Option 3: Development setup with uv (recommended for contributors)
git clone https://github.com/harsh194/ParamTunerCV.git
cd ParamTunerCV
uv sync
# Option 4: Development setup with pip
git clone https://github.com/harsh194/ParamTunerCV.git
cd ParamTunerCV
pip install -e .
# Test the installation
python examples/01_basic_usage.pyRequirements: Python 3.8+, OpenCV 4.10.0, NumPy 2.2.6, Matplotlib 3.10.3
- 50+ Pre-configured Trackbars - Real-time parameter tuning for morphology, edge detection, filtering, thresholding
- 15+ Specialized Factory Viewers - Ready-to-use viewers for Canny, Hough transforms, corner detection
- Interactive ROI System - Rectangle, polygon, and line drawing with visual feedback
- Multi-Space Thresholding - Support for 7 color spaces (BGR, HSV, Lab, etc.) with binary, adaptive, Otsu methods
- Professional Analysis Suite - Multi-channel histograms, pixel intensity profiles, JSON/CSV export
- Dual Operation Modes - Full GUI for development, headless for production automation
Start with these progressive examples in the examples/ folder:
| Example | Description |
|---|---|
01_basic_usage.py |
Core workflow and main loop pattern |
02_window_control.py |
Window management and UI controls |
03_trackbar_definitions.py |
Custom trackbars and parameter control |
04_app_debug_mode.py |
GUI vs headless operation modes |
05_viewer_factory_usage.py |
Pre-built viewers for common CV tasks |
from ParamTunerCV import ImageViewer, ViewerConfig
import numpy as np
import cv2
config = ViewerConfig()
trackbar_definitions = [
{"name": "Show Image", "param_name": "show", "max_value": "num_images-1", "initial_value": 0},
{"name": "Count", "param_name": "count", "max_value": 50, "initial_value": 10},
{"name": "Gauss Size", "param_name": "GaussianSize", "max_value": 31, "callback": "odd", "initial_value": 5},
{"name": "Thresh Val", "param_name": "thresh_val", "max_value": 255, "initial_value": 128},
]
IMG_HEIGHT, IMG_WIDTH = 600, 800
viewer = ImageViewer(config, trackbar_definitions)
while viewer.should_loop_continue():
params = viewer.trackbar.parameters
current_thresh = params.get("thresh_val")
current_gaussian_size = params.get("GaussianSize", 5)
block_count = params.get("count", 10)
base_color_image = np.full((IMG_HEIGHT, IMG_WIDTH, 3), (block_count * 5, 0, 0), dtype=np.uint8)
cv2.rectangle(base_color_image, (50, 50), (IMG_WIDTH - 50, IMG_HEIGHT - 50), (0, 255, 0), 3)
gray_image = cv2.cvtColor(base_color_image, cv2.COLOR_BGR2GRAY)
gauss_image = cv2.GaussianBlur(gray_image, (current_gaussian_size, current_gaussian_size), 0)
_, thresh_image = cv2.threshold(gauss_image, current_thresh, 255, cv2.THRESH_BINARY)
viewer.display_images = [
(base_color_image, "Color"),
(gray_image, "Grayscale Image"),
(gauss_image, "Gaussian Blur)"),
(thresh_image, "Threshold image")
]
viewer.cleanup_viewer()Mouse: Left drag (ROI), wheel (zoom), middle drag (pan), right click (remove selection)
Keys: R (rectangle), L (line), P (polygon), H (histogram), Q/ESC (quit)
50+ preconfigured trackbars for real-time OpenCV parameter tuning - adjust Gaussian blur, edge detection, morphological operations, and thresholding with immediate visual feedback
Comprehensive analysis control panel with ROI management, drawing tools, histogram generation, pixel intensity profiling, and integrated data export functionality
Sophisticated thresholding interface supporting 7 color spaces (BGR, HSV, Lab, etc.) with binary, adaptive, Otsu, and range-based methods for precise image segmentation
Professional export system for analysis results - save histograms, pixel profiles, and geometric data in JSON/CSV formats with configurable options
src/ParamTunerCV/
βββ core/ # ImageViewer main orchestrator
βββ config/ # ViewerConfig management
βββ controls/ # TrackbarManager for real-time controls
βββ events/ # MouseHandler for interactions
βββ gui/ # WindowManager and UI components
βββ analysis/ # Analysis modules (plotting, export, threshold)
βββ utils/ # Factory methods and utilities
Design: Factory pattern for viewers, Observer pattern for callbacks, Fluent interface for configuration
python examples/01_basic_usage.py # Primary test- Fork the repository
- Create feature branch:
git checkout -b feature/amazing-feature - Test changes:
python examples/01_basic_usage.py - Submit pull request
Coding Standards: PEP 8, docstrings, type hints
MIT License Β© 2025 Harsh Ranjan
Contact: harshranjan194@gmail.com



