Skip to content

A modern PyQt5-based image processing studio featuring real-time conversion, segmentation, and edge detection with object-oriented design and multithreaded processing.

License

Notifications You must be signed in to change notification settings

AvciDogukan/Real-Time-Image-Processor-PyQt5

Repository files navigation

🧠 PyQt5 Image Processing Studio

A modular and object-oriented image processing application built with PyQt5, designed for real-time image operations such as grayscale and HSV conversion, segmentation (Multi-Otsu, Chan-Vese, Morphological Snakes), and edge detection (Sobel, Scharr, Prewitt, Roberts).


🚀 Features

  • 🎨 Real-time image display and manipulation
  • 🧩 Modular architecture using object-oriented design (OOP)
  • 📚 Inheritance, Polymorphism, Encapsulation, Abstraction applied throughout
  • ⚙️ Dynamic threshold slider for edge detection
  • ♻️ Undo/Redo operation history
  • 📦 Integrated file handling and export features
  • 🌈 Smooth UI transitions using fade and hover animations
  • 🧵 Multithreaded processing via QThread to ensure responsive GUI
  • 🧪 Doxygen-style comments for all modules (documentation-ready)

🧱 Project Structure

📁 root/
├── main.py                      # Main application runner
├── LabFinal.py                 # Auto-generated GUI class from Qt Designer
├── conversion.py               # RGBToGray, RGBToHSV + Handler
├── segmentation.py             # MultiOtsu, Chan-Vese, MorphSnakes + Handler
├── edge_detection.py           # Sobel, Scharr, etc. + EdgeDetectionHandler
├── file_operations.py          # File save/export dialogs
├── image_manager.py            # Image load, clear, UI display updates
├── processing_worker.py        # QThread-based image processor
├── ui_state_manager.py         # GUI button/state control
├── ui_effects.py               # Fade & hover animations
├── style.qss                   # External style sheet
├── icons/                      # Custom icons for UI
└── README.md                   # You're here!

📷 Image Operations

Operation Type Methods
Conversion Grayscale, HSV
Segmentation Multi-Otsu, Chan-Vese, Morph. Snakes
Edge Detection Sobel, Scharr, Prewitt, Roberts

All operations are encapsulated in handler classes, enabling runtime polymorphism and abstraction.


🧠 Object-Oriented Design (OOP)

Each operation type is defined using:

  • ✅ Abstract Base Classes (ABC)
  • ✅ Specific subclasses implementing .apply() or .detect()
  • ✅ Handler classes to isolate operation logic

Example:

class ImageOperation(ABC):
    def apply(self): pass

class RGBToGray(ImageOperation):
    def apply(self):
        # grayscale conversion logic

💻 How to Run

  1. Make sure you have Python 3.7+ installed.
  2. Install dependencies:
pip install PyQt5 scikit-image numpy
  1. Run the application:
python main.py

📚 Requirements

  • PyQt5
  • scikit-image
  • numpy

📖 Documentation

All modules are documented using Doxygen-style Python docstrings. You can generate HTML or PDF documentation using Doxygen with the following config:

doxygen -g  # (first time only)
# edit Doxyfile to include *.py and set EXTRACT_ALL = YES
doxygen Doxyfile

✨ Screenshots

🖼️ Main Interface

Main UI

🔍 Segmentation Example

Segmentation

🧠 Edge Detection Result

Edge Detection

🎨 Hue Saturation Result

Hue Saturation


👨‍💻 Author

Doğukan Avcı
Eskişehir Osmangazi University - Electrical & Electronics Engineering


📝 License

This project is open for academic, educational, and personal use. Contact the author for other use cases.


✪️ Acknowledgements

  • PyQt5 Team
  • scikit-image contributors
  • Qt Designer GUI Toolkit

About

A modern PyQt5-based image processing studio featuring real-time conversion, segmentation, and edge detection with object-oriented design and multithreaded processing.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages