RGBit is a Comprehensive image processor desktop application with 24 filters built using C++ and the Qt Framework, featuring tools for effects, blurring, and image transformations, and color adjustments. Developed as part of the course requirements for CS213 (OOP) under the supervision of the Faculty of Computers and Artificial Intelligence, Cairo University.
-
Color Filters (with live preview)
- Brightness with slider range [-100,100]
- Temperature with slider range [-100,100]
- Contrast with slider range [-100,100]
- Black & White
- Gray
-
Effect Filters
- Oil Painting
- Sunlight
- Moonlight
- Purple
- Invert
- Infrared
- Burn
- HDR
- Swirl
- Old TV Filter
-
Transformation Filters
- Skew with slider range [-89,89]
- Rotate (90°, 180°, 270°)
- Flip (Horizontal / Vertical)
- Rubber Crop
- Resize
-
Guassian Blur Filter
-
Merge
-
Edges Detector
-
Add Frame (solid,dotted,dashed)
- Undo/Redo Support
- Reset Image
- Load & Save Image
- Help dialog for command guidance
- “Hold-press to view original” shortcut
- Built using Qt Widgets (
.uifile designed in Qt Designer) - Sidebar panel for image properties (appears when clicking “Properties” button)
- Central preview area for original and filtered images using
QLabel - Supports loading and saving images in
.png,.jpg,.jpeg, and.bmpformats - Animated sidebar for smoother transitions between editing tools
- Keyboard shortcuts for quick actions
- Blur filter: The Blur filter in this project is optimized using multithreading to leverage multi-core CPU architectures. Instead of processing the entire image sequentially, the algorithm divides the image into segments, and each thread handles a separate region in parallel.
ImageProcessor/
├── include/
│ └── mainwindow.h # GUI logic and event handlers
│ └── imageview.h # Image displaying and Rubber crop
│ └── stb_image.h # This is a helper library handed through the assignment
│ └── stb_image_write.h # This is a helper library handed through the assignment
│ ├── Image_Class.h # Image class handling raw pixel data & Filter prototypes (This file is helper interface for stb library, but we add filters)
├── src/
│ ├── main.cpp # Application entry point
│ ├── mainwindow.cpp # UI event handlers and image operations
│ ├── Image_Filters.cpp # Filters implementation
│ ├── imageview.cpp # Image displayer and Rubber crop implementation
├── ui/
│ └── mainwindow.ui # Designed Qt interface
├── Images (assets)/
│ └── oldtv.jpg
├── CMakeLists.txt # CMake build configuration
└── README.md # Project documentation
Before building, ensure the following dependencies are installed:
sudo apt update
sudo apt install build-essential cmake qtbase5-dev qtchooser qt5-qmake qtbase5-dev-toolsFor Qt 6:
sudo apt install qt6-base-dev qt6-base-dev-tools- Install Qt and select the Qt 6.x (MinGW) or Qt 5.x package.
- Ensure CMake and MinGW are added to your system PATH.
brew install cmake qtgit clone https://github.com/<your-username>/Qt-ImageProcessor.git
cd Qt-ImageProcessor
mkdir build && cd build
cmake ..
make
./ImageProcessorIf cmake cannot find Qt, specify its installation path:
cmake -DCMAKE_PREFIX_PATH=/path/to/Qt/6.x/gcc_64 ..- Open the project folder in CLion.
- Navigate to File → Settings → Build, Execution, Deployment → CMake.
- Click + to add a new CMake profile (for example,
Debug). - Press Reload CMake Project.
- Click Build → Build Project or press
Ctrl + F9to compile.
- Open the
CMakeLists.txtfile. - Configure the project using your preferred Qt Kit.
- Build and run the application directly.
If you get this message:
Cannot find any CMake profile
Go to Settings → Build, Execution, Deployment → CMake, and create a new profile (e.g., Debug).
If you see:
Could not find Qt6::Widgets
Run:
cmake -DCMAKE_PREFIX_PATH=/path/to/Qt/6.x/gcc_64 ..- Dr. Mohamed El-Ramely — Course Instructor
- Original Image_Class base by Shehab Diab, Youssef Mohamed, and Nada Ahmed
- stb_image / stb_image_write libraries provided through the assignment
This project is licensed under the MIT License — free for personal, educational, and academic use.
